문제
다음 SQL 실행 후 DEPT 테이블의 총 행 수는? (Oracle)
[DEPT] DEPTNO: 10,20,30,40 / DNAME: A,B,C,D [EMP] DEPTNO: 10,10,20,20,30,NULL
SQLDELETE FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE DEPTNO IS NOT NULL); SELECT COUNT(*) FROM DEPT;
① 0 ② 1 ③ 2 ④ 4
정답
2번
해설
서브쿼리 'SELECT DEPTNO FROM EMP WHERE DEPTNO IS NOT NULL'의 결과는 10,10,20,20,30입니다. 중복 제거되어 IN 조건은 (10,20,30)이 되고, DEPT 테이블에서 DEPTNO가 10,20,30인 행들이 삭제됩니다. 따라서 DEPTNO=40인 행만 남아서 COUNT(*)=1입니다. ①은 모든 행이 삭제된다고 잘못 판단, ②는 정답, ③은 2개 행이 남는다고 잘못 계산, ④는 삭제가 일어나지 않는다고 잘못 판단한 것입니다.