본문 바로가기
SQL

SQL 강의 SQLP SQLD 기출 문제 - 006 ( ORACLE AUTO COMMIT )

by SQL Master 2022. 10. 10.
반응형

이 문제는 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 언어에 대해서 파악하고 있으면 풀기 쉬운 문제였습니다!!

추가적인 궁금증은 댓글로 달아주세요!! :)

 

반응형

댓글