Direct Load 기능 개선
·
Oracle/Performance
Oracle 23c부터 Direct Load 후 커밋을 수행하지 않더라도 동일 세션에서 쿼리 또는 DML 문을 수행할 수 있도록 Direct Load 기능이 개선되었습니다. 참고로 New Features Guide에 Direct Load 후 다른 세션에서 DML 문을 수행할 수 있다는 내용이 있습니다.Prior to this feature, after a direct load and prior to a commit, queries and additional DMLs were not allowed on the same table for the same session or for other database sessions. This enhancement allows the loading session to ..
UNION ALL에 대한 Pushing Group By
·
Oracle/Performance
Oracle 23c에 UNION ALL 연산자를 포함한 인라인 뷰에 GROUP BY 절을 Pushing하는 쿼리 변환이 추가되었습니다. 참고로 이 기능은 New Features Guide에 포함되어 있지 않습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT CEIL (ROWNUM / 100), 1 FROM XMLTABLE ('1 to 1000000');CREATE TABLE t2 (c1, c2) AS SELECT * FROM t1; 아래는 19.3 버전의 실행 계획입니다. UNION ALL 연산을 수행한 후 집계를 수행합니다.-- 2: 19.3SELECT ..
UPDATE 문 SET 절 서브쿼리 Unnesting
·
Oracle/Performance
Oracle 21c에 UPDATE 문의 SET 절에 사용한 서브쿼리가 Unnesting되는 쿼리 변환이 추가되었습니다. 참고로 이 기능은 New Features Guide에 포함되어 있지 않습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; DROP TABLE t2 PURGE; DROP TABLE t3 PURGE; CREATE TABLE t1 (c1, c2, c3, c4) AS SELECT ROWNUM, ROWNUM, ROWNUM, ROWNUM FROM XMLTABLE ('1 to 1000000'); CREATE TABLE t2 (c1, c2) AS SELECT c1, c2 FROM t1; CREATE TABLE t3 (c1, c2) AS SELEC..
Table Value Constructor
·
Oracle/SQL
개요Oracle 23c에 Table Value Constructor(이후 TVC) 기능이 추가되었습니다.The database's SQL engine now supports a VALUES clause for many types of statements. This new clause allows for materializing rows of data on the fly by specifying them using the new syntax without relying on existing tables. Oracle supports the VALUES clause for the SELECT, INSERT, and MERGE statements. The introduction of the new VALUES..
UPDATE 문의 RETURNING INTO 절 개선
·
Oracle/PLSQL
Oracle 23c부터 UPDATE 문의 RETURNING INTO 절에 OLD 키워드와 NEW 키워드를 사용하여 갱신 전후 값을 반환할 수 있습니다.The RETURNING INTO clause for INSERT, UPDATE, and DELETE statements are enhanced to report old and new values affected by the respective statement. This allows developers to use the same logic for each of these DML types to obtain values pre- and post-statement execution. Old and new values are valid only for UPD..
SQL 도메인
·
Oracle/Administration
개요Oracle 23c에 SQL 도메인(이후 도메인) 기능이 추가되었습니다. 도메인은 데이터 타입, CHECK 제약조건, 표시 형식, 정렬 기준 등을 정의할 수 있는 오브젝트로 싱글 칼럼 도메인, 멀티 칼럼 도메인, Flexible 도메인으로 구분됩니다.A SQL domain is a dictionary object that belongs to a schema and encapsulates a set of optional properties and constraints for common values, such as credit card numbers or email addresses. After you define a SQL domain, you can define table columns to be ..
BOOLEAN 타입
·
Oracle/SQL
Oracle 23c부터 SQL 문에 BOOLEAN 타입을 사용할 수 있습니다.Oracle Database now supports the ISO SQL standard-compliant BOOLEAN data type. This enables you to store TRUE and FALSE values in tables and use BOOLEAN expressions in SQL statements. The BOOLEAN data type standardizes the storage of Yes and No values and makes it easier to migrate to Oracle Database. 테스트를 위해 아래와 같이 c2 칼럼이 BOOLEAN 타입인 테이블을 생성하겠습니다.-- 1-..
FROM 절 미사용 SELECT 문
·
Oracle/SQL
Oracle 23c부터 FROM 절을 사용하지 않은 SELECT 문을 사용할 수 있습니다.You can now run SELECT expression-only queries without a FROM clause. This new feature improves SQL code portability and ease of use for developers. 아래 SELECT 문은 FROM 절을 사용하지 않습니다.  23.2 버전은 결과가 반환되지만, 19.3 버전은 에러가 발생합니다. 1-1번 쿼리의 실행 계획에서 내부적으로 DUAL 테이블이 사용되는 것을 알 수 있습니다.-- 1-1: 23.2SELECT 1 AS c1;C1-- 11개의 행이 선택되었습니다.----------------------------..
GROUP BY 절과 HAVING 절 표현식 개선
·
Oracle/SQL
개요Oracle 23c부터 GROUP BY 절과 HAVING 절에 칼럼 앨리어스를 사용하거나, GROUP BY 절에 위치 표현식을 사용할 수 있습니다.You can now use column alias or SELECT item position in GROUP BY, GROUP BY CUBE, GROUP BY ROLLUP, and GROUP BY GROUPING SETS clauses. Additionally, the HAVING clause supports column aliases. These enhancements make it easier to write GROUP BY and HAVING clauses. It can make SQL queries much more readable and main..
날짜 값에 CEIL, FLOOR 함수 사용
·
Oracle/SQL
Oracle 23c부터 DATE, TIMESTAMP, INTERVAL 등의 날짜 값에 CEIL, FLOOR 함수를 사용할 수 있습니다.You can now pass DATE, TIMESTAMP, and INTERVAL values to the CEIL and FLOOR functions. These functions include an optional second argument to specify a rounding unit. You can also pass INTERVAL values to ROUND and TRUNC functions. These functions make it easy to find the upper and lower bounds for date and time values for..
단순 CASE 문 평가식 개선
·
Oracle/PLSQL
Oracle 23c부터 단순(simple) CASE 문과 CASE 표현식에 단항 조건(dangling predicates)을 사용할 수 있습니다.The CASE statement is extended in PL/SQL to be consistent with the updated definitions of CASE expressions and CASE statements in the SQL:2003 Standard [ISO03a, ISO03b]. Dangling predicates allow tests other than equality to be performed in simple CASE operations. Multiple choices in WHEN clauses allow CASE operatio..
UPDATE 문에 대한 DEFAULT ON NULL 절
·
Oracle/Administration
Oracle 23c부터 UPDATE 문에 대해서도 DEFAULT ON NULL 속성을 지정할 수 있습니다. 참고로 INSERT 문에 대한 DEFAULT ON NULL 속성은 12.1 버전에 추가되었습니다.You can define columns as DEFAULT ON NULL for update operations, which was previously only possible for insert operations. Columns specified as DEFAULT ON NULL are automatically updated to the specific default value when an update operation tries to update a value to NULL. This featu..