주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료할 때 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Database 23ai의 SQL 기능 살펴보기
소개
이 자습서에서는 알아야 할 10가지 기능과 기존 기능과 비교하는 방법을 배웁니다. 이러한 기능은 다음과 같습니다.
FROM
절(선택 사항).- SQL의 경우
BOOLEAN
IF NOT EXISTS
DDL(데이터 정의어) 절입니다.INSERT
다중 값.- 새 테이블
VALUE
생성자입니다. GROUP BY
절의 별칭입니다.UPDATE
및MERGE
문의RETURNING
절입니다.UPDATE
및DELETE
에 조인합니다.- 주석 - 데이터베이스 객체에 대한 새 메타데이터입니다.
- SQL 도메인이 있는 경량 객체 유형입니다.
목표
-
FROM
절 없이 SQL 사용: 표현식 또는 내장 함수를 선택할 때FROM
절을 사용하는 요구 사항을 제거하여 더 간단한 질의를 사용으로 설정합니다. -
SQL에서 고유
BOOLEAN
데이터 유형 구현: SQL 테이블, 쿼리 및 조건에서 고유BOOLEAN
데이터 유형을 활용하여 보다 직관적인 참/거짓 논리 처리를 수행합니다. -
DDL 문에서
IF NOT EXISTS
활용: 추가 PL/SQL 검사 없이 조건부로CREATE
및DROP
문을 실행하여 객체 생성 및 삭제 논리를 간소화합니다. -
다중 값
INSERT
작업 수행: 단일INSERT
문에 여러 행을 삽입하여 코드 가독성을 향상시키고 데이터베이스에 대한 왕복을 줄입니다. -
인라인 데이터 집합에 테이블 값 생성자 사용:
MERGE
,SELECT
또는 비교와 같은 작업을 지원하는VALUES
생성자를 사용하여 SQL에서 직접 임시 행 집합을 생성합니다. -
GROUP BY 절의 참조 열 별칭: 반복 표현식 대신
GROUP BY
에서SELECT
별칭을 사용하도록 허용하여 질의 가독성을 향상시킵니다. -
UPDATE
및MERGE
에서RETURNING
절 활용: 후속 질의 없이도UPDATE
및MERGE
문에서 직접 영향을 받는 데이터를 검색합니다. -
UPDATE
및DELETE
문에서 조인 수행:UPDATE
및DELETE
작업에서 직접JOIN
논리를 사용하여 관련 테이블 조건을 기반으로 레코드를 수정하거나 제거합니다. -
메타데이터를 사용하여 데이터베이스 객체에 주석 달기:
ANNOTATION
를 사용하여 설명 메타데이터(예: 소유자, 용도)를 저장하여 유지 관리 및 검사를 보다 쉽게 수행할 수 있도록 데이터베이스 객체를 문서화합니다. -
SQL 도메인을 사용하여 경량 객체 유형 정의: 여러 테이블에 걸쳐 일관성과 강력한 입력을 적용하기 위한 제약 조건으로 재사용 가능한 도메인 유형을 생성합니다.
필요 조건
-
기본 SQL 지식
-
SQL 구문 이해:
SELECT
,INSERT
,UPDATE
,DELETE
,JOIN
,GROUP BY
등. -
관계형 데이터베이스 개념 및 데이터 유형에 대한 기본적인 이해
-
-
Oracle Database 23ai 및 이전 버전을 경험해 보십시오.
-
DDL, DML(데이터 조작어) 및 PL/SQL이 Oracle Database 19c, Oracle Database 21c 및 이전 버전에서 작동하는 방식에 대한 인식
-
DUAL
,MERGE
,RETURNING INTO
등과 같은 Oracle 특정 기능에 대한 지식
-
-
Oracle Database 23ai 환경에 액세스합니다.
-
Oracle Database 23ai(로컬 설정, 클라우드 인스턴스 또는 Oracle Live SQL)에 액세스할 수 있습니다.
-
일부 기능(예: SQL 도메인 또는
BOOLEAN
)은 Oracle Database 23ai에서만 작동합니다.
-
-
SQL*Plus, SQLcl 또는 GUI 툴(예: SQL Developer 또는 DataGrip) 호환 가능한 인터페이스에서 SQL 문을 실행하고 테스트할 수 있습니다.
-
고급 기능용 PL/SQL 기본 사항
RETURNING INTO
사용, 프로시저 블록 및 동적 SQL 처리 -
제약 조건 및 데이터 무결성 규칙에 대한 지식 SQL 도메인 및 테이블 제약 조건을 이해해야 합니다.
-
Oracle 데이터 딕셔너리 뷰에 대한 기본적인 이해 주석 또는 메타데이터 질의용입니다. 예:
USER_TABLES
,USER_ANNOTATIONS
. -
Oracle Database의 롤 및 권한 테이블, 도메인 및 주석을 생성/변경하는 기능에는 적절한 사용자 권한이 필요합니다.
-
버전 인식 도구 및 클라이언트가 Oracle Database 23ai 기능을 지원하는지 확인합니다(이전 드라이버 또는 도구가 실패할 수 있음).
-
(선택 사항) 다른 최신 SQL 방언(PostgreSQL, MySQL 등)에 노출됩니다. 이렇게 하면
VALUES
,BOOLEAN
및IF EXISTS
와 같은 새로운 기능의 교차 호환성을 이해할 수 있습니다.
기능 1: FROM
절 사용
Oracle Database 23ai에 도입된 흥미로운 기능은 SELECT
문에서 FROM
절을 선택할 수 있는 옵션입니다. 이 버전까지 FROM
절이 필요합니다.
다음은 Oracle Database 23ai에서 FROM
기능이 없는 SELECT
의 몇 가지 잠재적 이점입니다.
-
더 쉬운 데이터 조작을 위해 현재 날짜를 선택합니다.
SELECT CURRENT_DATE;
-
테이블 데이터를 포함하지 않는 수학 연산 또는 계산입니다.
SELECT 25.50*25.25; 25.50*25.25 ----------- 643.875 Elapsed: 00:00:00.002 1 rows selected.
-
FROM
절을 사용하지 않는 PL/SQL 블록입니다.CREATE SEQUENCE empno_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 1000; Sequence EMPNO_SEQ created. Elapsed: 00:00:00.005 declare v1 number; begin select empno_seq.nextval into v1; dbms_output.put_line ('v1= '||v1); end; / v1= 1 PL/SQL procedure successfully completed. Elapsed: 00:00:00.009
-
작업을 수행하거나 값을 검색하는 내장 또는 사용자 정의 함수입니다.
SELECT DBMS_RANDOM.VALUE() as random_number;
-
테이블 데이터에 의존하지 않고 문자열 조작 또는 변환
SELECT UPPER('oracle') AS uppercase_text;
-
테이블을 사용하지 않는 조건부 또는 논리적 표현식
SELECT CASE WHEN 10 > 5 THEN 'True' ELSE 'False' END AS result;
기능 2: BOOLEAN
데이터 유형 사용
Oracle Database 23ai는 새로운 BOOLEAN
데이터 유형을 도입했습니다. 이렇게 하면 숫자 값 또는 Varchar로 시뮬레이션하는 대신 실제 부울 열/변수를 사용할 수 있습니다. 부울 술어를 작성하는 기능은 SQL 문의 구문을 단순화합니다.
-
TEST_BOOLEAN
이라는 테이블을 생성합니다.CREATE TABLE IF NOT EXISTS TEST_BOOLEAN (name VARCHAR2(100), IS_SLEEPING BOOLEAN); Table TEST_BOOLEAN created. Elapsed: 00:00:00.004
-
새 테이블에 데이터를 입력합니다.
IS_SLEEPING
값은 기본값으로FALSE
로 설정된NOT NULL
입니다.ALTER TABLE TEST_BOOLEAN modify (IS_SLEEPING boolean NOT NULL);
ALTER TABLE TEST_BOOLEAN modify (IS_SLEEPING default FALSE); Table TEST_BOOLEAN altered. Elapsed: 00:00:00.014
여기에서는 Mick, Keith 및 Ron에 대한 다양한 유형의 부울 입력을 볼 수 있습니다. 모두 유효합니다. Mick의 경우 기본 FALSE 값이 사용됩니다. Mick은 일시 정지 상태가 아닙니다.
1 row inserted. Elapsed: 00:00:00.006
Keith의 경우 NO 값을 사용합니다. Keith는 일시 정지 상태가 아닙니다.
INSERT INTO TEST_BOOLEAN (name, is_sleeping) values ('Keith','NO'); 1 row inserted. Elapsed: 00:00:00.002
Ron의 경우 1 값을 사용합니다. Ron이 절전 상태입니다.
-
우리의 부울 값을 기반으로 몇 가지 결과를 참조하십시오.
SELECT * FROM test_boolean;
어떤 종류의 부울 시스템을 배치했는지 더 이상 기억할 필요가 없습니다. 앞에서 설명한 것처럼 0/1, True/False, Yes/No 또는 기타 공통 입력을 사용하면 정확한 테이블 값이 반환됩니다.
기능 3: IF NOT EXISTS
DDL 절 사용
Oracle Database 23ai부터 새 IF NOT EXISTS
DDL 절을 통해 DDL 오류 처리 방법을 결정할 수 있습니다. 이렇게 하면 객체가 존재하거나 존재하지 않기 때문에 발생할 수 있는 오류를 스크립팅에 숨길 수 있으므로 DDL 스크립팅이 간소화됩니다.
-
먼저 이 새 기능을 사용하지 않고 테스트합니다. 다음 명령문을 실행합니다.
DROP TABLE DEPT;
삭제할 기존
DEPT
테이블이 없으므로ORA-00942: table or view does not exist
오류가 표시됩니다. -
그러나 Oracle Database 23ai에서는 오류 없이
DROP IF EXISTS
를 사용할 수 있습니다. 이것은 우리에게 오류를 피하면서 마음의 평화를줍니다. 이제 동일한 명령문을 실행하지만 이 새IF EXISTS
기능을 포함합니다.DROP TABLE IF EXISTS DEPT;
-
마찬가지로, 이 기능을 사용하여 테이블이 없는 경우 테이블을 생성할 수 있습니다. 해당
DEPT
테이블을 생성합니다.CREATE TABLE IF NOT EXISTS DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ;
-
이 기능을 사용하여 이 자습서 전체에서 더 많은 샘플 테이블을 생성할 수 있습니다. 여기서는
EMP
이라는 직원 테이블을 만듭니다.CREATE TABLE IF NOT EXISTS EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); Table EMP created. Elapsed: 00:00:00.006
기능 4: 다중 행에 INSERT
사용
다른 자주 사용되는 데이터베이스 관리 시스템과의 공존 및 호환성을 향상시키는 또 다른 흥미로운 기능은 다중 값 INSERT
문입니다.
-
이전 버전의 Oracle 데이터베이스에서 예를 들어, 여러 행을 삽입하려면 각 행에 대해 별도의 insert 문이 필요했습니다.
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); INSERT INTO DEPT VALUES (50,'HR','LOS ANGELES'); INSERT INTO DEPT VALUES (60,'IT','SAN FRANCISCO'); INSERT INTO DEPT VALUES (70,'MANUFACTURING','DETROIT');
Oracle Database 23ai는 이러한 모든 행을 하나의
INSERT
문으로 삽입할 수 있는 새로운 구문을 도입했습니다. 따라서 하나의 DML에 여러 튜플을 삽입할 수 있습니다. 다음 명령문을 실행합니다.INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'), (20,'RESEARCH','DALLAS'), (30,'SALES','CHICAGO'), (40,'OPERATIONS','BOSTON'), (50,'HR','LOS ANGELES'), (60,'IT','SAN FRANCISCO'), (70,'MANUFACTURING','DETROIT');
다른 데이터베이스와의 호환성 향상 외에도 이 명령문을 사용하여 자동 커밋 모드에서 일부 삽입 작업의 일관성을 보장할 수 있습니다. 예를 들어, 이 모드를 사용하는 Oracle APEX 애플리케이션의 경우 데이터 작업을 수행하는 것이 중요할 수 있습니다.
-
이 기능을 사용하여
EMP
테이블에 대한 값을 채우려면 다음 명령문을 실행합니다.INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20), (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30), (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30), (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20), (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30), (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30), (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10), (7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87')-85,3000,NULL,20), (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10), (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30), (7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20), (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30), (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20), (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
기능 5: 새 VALUE
생성자 사용
Oracle 데이터베이스 23ai부터 테이블 값 생성자가 확장되었습니다. 이제 INSERT
문에서 단일 명령으로 여러 행을 생성하는 데 사용할 수 있습니다. 또한 SELECT
문 및 뷰 계수화 구문에서 사용할 수 있습니다. 이 마지막 경우 명령문의 구문을 단순화하고 DUAL
테이블 사용을 피합니다.
다음 명령문은 일종의 테이블 함수처럼 보입니다.
SELECT * FROM (VALUES (50,'HR'), (60,'DEV'), (70,'AI')) virt_dept (deptno, dname);
기능 6: GROUP BY
절에서 별칭 사용
Oracle Database 23ai는 SELECT
문의 GROUP BY
절에서 별칭을 사용할 수 있는 기능을 도입했습니다. 이 기능은 복잡한 표현식으로 쿼리 작성을 단순화하고 Teradata, MySQL 및 PostgreSQL와 같은 다른 관계형 데이터베이스와의 호환성을 개선합니다.
예:
SELECT to_char(hiredate,'YYYY') "Year", count(*)
FROM emp
GROUP BY to_char(hiredate,'YYYY');
Oracle Database 23ai에서는 다음 이미지와 같이 간단한 방법으로 작성할 수 있습니다.
기능 7: UPDATE
및 MERGE
문의 RETURNING
절 사용
이 절은 EXECUTE IMMEDIATE
문의 일부로 이전에 구현되었습니다. 그러나 Oracle Database 23ai에서는 기존의 정적 DML 문의 일부로 이를 찾을 수 있습니다.
-
이 경우 처리된 행에서 열의 이전 값과 새 값을 가져올 수 있습니다. 먼저 왕의 현재 월급을 보자.
SELECT ename, sal FROM emp WHERE ename = 'KING';
-
LiveSQL에서 변수를 사용하기 위해 PL/SQL에서 명령문을 래핑합니다. 이 스크립트를 실행합니다. 먼저 이전 급여와 새 급여에 대한 변수를 생성한 다음
RETURNING
절을 사용하여 King의 급여를 갱신하여 변수를 설정합니다. 그런 다음 결과를 둘러봅니다.BEGIN DECLARE old_salary NUMBER; new_salary NUMBER; BEGIN UPDATE emp SET sal = sal + 1000 WHERE ename = 'KING' RETURNING OLD sal, NEW sal INTO old_salary, new_salary; DBMS_OUTPUT.PUT_LINE('Old Salary: ' || old_salary); DBMS_OUTPUT.PUT_LINE('New Salary: ' || new_salary); END; END;
Old Salary: 6000 New Salary: 7000
이 예제에서는
UPDATE
문을 사용했지만RETURNING
절은MERGE
문과 유사하게 사용할 수 있습니다.
기능 8: UPDATE
및 DELETE
에서 조인 사용
외래 테이블 조건에 준하여 조인을 사용하여 테이블 데이터를 갱신할 수 있습니다. 하위 선택 또는 IN
절이 필요하지 않습니다.
-
다음 명령문을 실행하여 연구 부서의 사원 급여 정보를 확인합니다.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
-
급여 정보를 갱신하려면 Oracle Database 23ai 이전에 중첩된 명령문을 사용해야 합니다.
UPDATE emp e set e.sal=e.sal*2 WHERE e.deptno in (SELECT d.deptno FROM dept d WHERE e.deptno=d.deptno and d.dname='RESEARCH');
Oracle Database 23ai를 사용하면 다음과 같이 사용할 수 있습니다.
UPDATE emp e set e.sal=e.sal*2 FROM dept d WHERE e.deptno=d.deptno and d.dname='RESEARCH';
-
급여가 성공적으로 갱신된 것을 확인할 수 있습니다.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
피쳐 9: 주석 사용
주석은 데이터베이스 객체에 대한 선택적 메타 데이터입니다. 주석은 이름-값 쌍이거나 이름 자체입니다. 이름 및 선택적 값은 자유 형식 텍스트 필드입니다. 주석은 주석이 추가된 데이터베이스 객체에 대한 하위 요소로 표시됩니다. 지원되는 스키마 객체에는 테이블, 뷰, Materialized View 및 인덱스가 포함됩니다. annotation을 사용하면 데이터베이스 객체에 대한 메타 데이터를 저장하고 검색할 수 있습니다. 이를 사용하여 비즈니스 논리, 사용자 인터페이스를 사용자정의하거나 메타데이터 저장소에 메타데이터를 제공할 수 있습니다. 테이블 또는 열 레벨에서 CREATE
또는 ALTER
문을 사용하여 추가할 수 있습니다.
annotation을 사용하면 데이터베이스 객체에 대한 메타 데이터를 저장하고 검색할 수 있습니다. 이를 사용하여 비즈니스 논리, 사용자 인터페이스를 사용자정의하거나 메타데이터 저장소에 메타데이터를 제공할 수 있습니다.
-
열 및 테이블 주석이 포함된 주석이 달린 테이블
EMP_ANNOTATED_NEW
를 생성합니다.CREATE TABLE emp_annotated_new (empno number annotations(identity, display 'person_identity', details 'person_info'), ename varchar2(50), salary number annotations (display 'person_salary', col_hidden)) annotations (display 'employee_table');
-
USER_ANNOTATIONS
및USER_ANNOTATIONS_USAGE
와 같은 데이터 딕셔너리 뷰는 사용을 모니터하는 데 도움이 될 수 있습니다.SELECT object_name, object_type, column_name, annotation_name, annotation_value FROM user_annotations_usage;
기능 10: SQL 도메인 사용
SQL 도메인은 스키마에 속하는 딕셔너리 객체로, 선택적 속성 및 제약 조건 집합을 캡슐화하고 CREATE DOMAIN
문으로 생성됩니다. 도메인은 제약 조건, 표시, 순서 및 주석 속성을 제공합니다. SQL 도메인을 정의한 후에는 해당 도메인과 연관될 테이블 열을 정의하여 해당 열에 도메인의 선택적 속성 및 제약 조건을 명시적으로 적용할 수 있습니다.
SQL 도메인을 사용하면 사용자가 의도한 열 사용을 선언할 수 있습니다. 추상적 도메인 관련 지식을 쉽게 재사용할 수 있도록 하는 데이터 딕셔너리 객체입니다.
-
yearbirth
라는 도메인과person
라는 테이블을 생성합니다.CREATE DOMAIN yearbirth as number(4) constraint check ((trunc(yearbirth) = yearbirth) and (yearbirth >= 1900)) display (case when yearbirth < 2000 then '19-' ELSE '20-' end)||mod(yearbirth, 100) order (yearbirth -1900) annotations (title 'yearformat');
CREATE TABLE person (id number(5), name varchar2(50), salary number, person_birth number(4) DOMAIN yearbirth ) annotations (display 'person_table');
"Desc person;
Name Null? 유형
ID 번호(5) 이름 VARCHAR2(50) 급여 번호 PERSON_BIRTH 번호(4) 도메인 생년월일
INSERT INTO 개인 값(1,'MARTIN',3000, 1988);
2. With the new function `DOMAIN_DISPLAY` you can display the property.
SELECT DOMAIN_DISPLAY(person_birth) FROM person;

3. Domain usage and annotations can be monitored with data dictionary views. Let us view `user_annotations_usage`.
user_annotations_usage에서 *를 선택하십시오;
Define reusable domain types (lightweight objects).
EmailAddress 도메인을 VARCHAR2(100)으로 생성합니다. (REGEXP_LIKE(VALUE, '^[^@]+@[^@]+.[^@]+$'));
CREATE TABLE users ( user_id NUMBER, email EmailAddress ); ```
Oracle Database 23ai 기능의 제한 사항 및 제한 사항
-
FROM
조항.-
함수, 리터럴 또는 변수와 같은 단순 표현식에만 적용할 수 있습니다.
-
테이블, 조인 또는 하위 질의를 포함하는 질의에는 사용할 수 없습니다.
-
FROM
절이 필요한 커서 루프가 있는 PL/SQL 컨텍스트에서는 지원되지 않습니다.
-
-
고유
BOOLEAN
데이터 유형.-
테이블 열 및 표현식에 사용할 수 있습니다.
-
인덱스화할 수 없습니다. 데이터 유형이
BOOLEAN
인 열은 인덱스화할 수 없습니다. -
모든 클라이언트 도구 또는 보고 도구에서 직접 지원되지 않습니다(0/1 또는 Y/N으로 변환해야 할 수 있음).
-
일부 이전 API 또는 드라이버에서는 지원되지 않습니다(JDBC/ODBC 클라이언트에 업데이트가 필요할 수 있음).
-
-
DDL의
IF NOT EXISTS
.-
멱등 DDL 스크립트를 단순화합니다.
-
특정 객체(
TABLE
,INDEX
,SEQUENCE
,VIEW
등)에만 사용할 수 있습니다. -
일부 객체 유형은 이를 지원하지 않습니다. 예를 들어,
TRIGGER
,SYNONYM
는 여전히 수동 검사가 필요할 수 있습니다. -
이전 Oracle 버전에서는 지원되지 않습니다.
-
-
다중 값
INSERT
.-
일괄 삽입을 위한 구문을 정리합니다.
-
명시적 값 집합으로 제한되어 동일한
VALUES
절에SELECT
또는 subquery를 사용하여 삽입할 수 없습니다. -
한 단계에서 삽입된 모든 행에 대해
RETURNING
절과 결합할 수 없습니다.
-
-
테이블 값 생성자(
VALUES
절).-
작은 임시 행 집합에 적합합니다.
-
행 제한(일반적으로 컨텍스트에 따라 999개 이하)이 있습니다.
-
대규모 로드에 최적화되지 않았으므로 임시 테이블이나 대용량 데이터 집합에 대한 스테이징을 사용하는 것이 좋습니다.
-
-
GROUP BY
절의 별칭.-
쿼리를 읽기 및 쓰기가 더 쉬워집니다.
-
하위 질의 열을 포함하는 모든 분석 함수 또는 복합 질의에서는 지원되지 않습니다.
-
alias가 오버로드된 query에서 혼동을 일으킬 수 있습니다(예: inner query에서 동일한 이름).
-
-
UPDATE
/MERGE
의RETURNING
조항.-
DML 후
SELECT
의 필요성이 줄어듭니다. -
실제로 수정된 행의 값만 반환할 수 있습니다.
-
FORALL
가 없는 대량 갱신에는 사용할 수 없으므로 명시적RETURNING BULK COLLECT
가 포함된 PL/SQL을 사용해야 합니다.
-
-
UPDATE
및DELETE
에서 조인.-
다중 테이블 논리를 더 간단하게 만듭니다.
-
일부 컨텍스트에서는
INNER JOIN
및LEFT JOIN
유형만 지원됩니다. -
이전 툴을 사용하거나 이전 Oracle 버전과의 호환성이 필요한 경우
MERGE
논리에 대해 재작성이 필요할 수 있습니다.
-
-
주석.
-
문서에 적합합니다.
-
주석은 메타 데이터 전용이며 런타임 시 적용할 수 없습니다.
-
검색하려면 Oracle 데이터 딕셔너리 뷰(
*_ANNOTATIONS
)를 사용해야 합니다. -
아직 Oracle Data Pump 내보내기/가져오기 또는 복제 도구에 통합되지 않았습니다.
-
-
SQL 도메인이 포함된 경량 객체 유형
-
재사용 가능하고 일관된 유형 적용.
-
전체 객체 유형(메소드, 속성 없음)보다 훨씬 강력합니다.
-
상속 또는 구성이 없으며, 기본 제약 조건 적용에만 적용됩니다.
-
도메인 자체에서 기본값을 정의할 수 없습니다(기본값은 여전히 열 레벨에서 지정됨).
-
일반 제한 사항
-
도구 호환성: 많은 GUI 도구와 이전 Oracle 클라이언트 라이브러리가 아직 Oracle Database 23ai 구문(특히
VALUES
,BOOLEAN
,DOMAIN
)을 완전히 지원하지 않을 수 있습니다. -
익스포트/임포트: 주석 또는 도메인과 같은 일부 기능은 이전
expdp
/impdp
워크플로우에 보존되지 않을 수 있습니다. -
실험적 동작: 이러한 기능은 새로운 기능이기 때문에 일부는 사소한 릴리스에서 진화할 수 있습니다. 패치 노트 및 설명서를 자주 확인하십시오.
관련 링크
승인
- 작성자 - Aditya Srivastawa(주요 클라우드 설계자)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Explore SQL Features in Oracle Database 23ai
G35700-01
Copyright ©2025, Oracle and/or its affiliates.