반응형
이 문제는 ORACLE에서 DML 사용 시 COMMIT를 따로 해줘야 하는 수동 COMMIT입니다. 하지만 어떤 경우에는 AUTO COMMIT이 됩니다. 그 조건에 대해 이해할 수 있는 문제이고 이건 현업에서도 실수가 많아서 나중에 일할 때도 도움이 됩니다.
문제
아래의 SQL를 순차적으로 실행할 경우 결과 값은?
1. CREATE TABLE EMP ( EMP_ID NUMBER );
2. INSERT INTO EMP VALUES ( 1 );
3. INSERT INTO EMP VALUES ( NULL );
4. CREATE TABLE DEPT ( DEPT_ID NUMBER );
5. INSERT INTO DEPT VALUES ( 2 );
6. ROLLBACK;
7. INSERT INTO DEPT VALUES ( 3 );
8. COMMIT;
[결과 SQL]
SELECT *
FROM EMP;
SELECT *
FROM DEPT;
문제풀이
- DML ( INSERT, UPDATE, DELETE 등 ) 과 DDL ( CREATE, TRUNCATE, ALTER 등 )을 구분할 줄 알아야 합니다.
- DML은 AUTO COMMIT이 아니며, DDL은 AUTO COMMIT 입니다.
1. CREATE TABLE EMP ( EMP_ID NUMBER );
>> EMP 테이블 생성
2. INSERT INTO EMP VALUES ( 1 );
>> EMP 테이블에 1 삽입 ( COMMIT 상태 아님 )
3. INSERT INTO EMP VALUES ( NULL );
>> EMP 테이블에 NULL 삽입 ( COMMIT 상태 아님 )
>> PK나 NOT NULL 아니면 NULL 삽입 가능합니다
4. CREATE TABLE DEPT ( DEPT_ID NUMBER );
>> DEPT 테이블 생성
>> DDL 문장이므로 AUTO COMMIT 발생하여, EMP 테이블 데이터 삽입 완료
5. INSERT INTO DEPT VALUES ( 2 );
>> DEPT 테이블에 2 삽입 ( COMMIT 상태 아님 )
6. ROLLBACK;
>> ROLLBACK으로 DEPT 테이블에 2 초기화
7. INSERT INTO DEPT VALUES ( 3 );
>> DEPT 테이블에 3 삽입 ( COMMIT 상태 아님 )
8. COMMIT;
>> COMMIT 으로 DEPT 테이블에 데이터 삽입 완료
>> 결과적을 EMP 테이블에는 1, NULL 데이터가 DEPT 테이블에는 3 데이터가 들어가게 됩니다.
DML, DDL, DCL 등 SQL 언어에 대해서 파악하고 있으면 풀기 쉬운 문제였습니다!!
추가적인 궁금증은 댓글로 달아주세요!! :)
반응형
'SQL' 카테고리의 다른 글
SQL 강의 SQLP SQLD 기출 문제 - 008 ( COUNT 집계 함수 ) (0) | 2022.10.12 |
---|---|
SQL 강의 SQLP SQLD 기출 문제 - 007 ( NULL 체크 함수 ) (0) | 2022.10.10 |
SQL 강의 SQLP SQLD 기출 문제 - 005 / 데이터 타입, 묵시적 형변환 (0) | 2022.10.08 |
SQL 강의 SQLP SQLD 기출 문제 - 004 / 다중 IN 조건 이해 (0) | 2022.10.07 |
SQL 강의 SQLP SQLD 기출 문제 - 003 / ORACLE OUTER JOIN 이해 (0) | 2022.10.06 |
댓글