문제
다음 중 EMP 테이블에서 부서번호(DEPTNO)가 10인 사원만 EMP_BACKUP 테이블로 적재하는 SQL로 가장 적절한 것은? (두 테이블의 컬럼 구조는 (EMPNO, ENAME, DEPTNO)로 동일하다)
① INSERT INTO EMP_BACKUP VALUES (SELECT * FROM EMP WHERE DEPTNO = 10);
② INSERT INTO EMP_BACKUP SET SELECT * FROM EMP WHERE DEPTNO = 10;
③ INSERT EMP_BACKUP SELECT * FROM EMP WHERE DEPTNO = 10;
④ INSERT INTO EMP_BACKUP SELECT * FROM EMP WHERE DEPTNO = 10;
정답
4번
해설
다른 테이블의 조회 결과를 적재할 때는 INSERT INTO 대상테이블 SELECT ... 구문을 사용하며, 이때 VALUES 키워드는 쓰지 않는다. ①은 VALUES (...) 안에 SELECT를 넣은 잘못된 형태, ②의 SET ... SELECT는 존재하지 않는 구문, ③은 INTO가 빠진 비표준 형태이다. ④가 INSERT ~ SELECT의 올바른 표준 구문이다.