10.1.3 SELECT 문이 결합된 INSERT 문
마지막 유형은 SELECT 문이 결합된 INSERT 문입니다. 구문은 다음과 같습니다.
구문 10-3
INSERT INTO 테이블 (칼럼1, 칼럼2, ...)
SELECT ...
FROM ...
WHERE ... ;
기본형의 VALUES 절 대신 SELECT 문이 오는데, SELECT 문이 입력 대상 테이블에 들어갈 칼럼 값을 대신합니다. SELECT 문을 실행하면 조건에 맞는 데이터가 조회되어 결과 집합이 나오고, 이 결과 집합을 테이블에 입력합니다. 따라서 SELECT 문이 반환하는 결과 집합은 데이터를 입력할 테이블의 칼럼 개수, 순서, 데이터 타입과 맞아야 합니다. 이는 SELECT 문의 SELECT 절에 명시하는 칼럼(표현식)의 개수, 순서, 데이터 타입이 일치해야 한다는 뜻입니다.
또한, SELECT 문이 반환하는 건수(로우 수)에 따라 1건이 입력될 수도 있고 여러 건이 입력될 수도 있습니다. 만약 SELECT 문이 0건의 데이터를 조회한다면 입력할 테이블에도 데이터가 입력되지 않겠죠.
SELECT 문이 결합된 INSERT 문을 어떻게 사용하는지 예제로 알아봅시다. 먼저 테스트용 테이블을 만듭니다. 비교하기 위해 앞에서 만든 emp_test 테이블과 똑같은 형태로 emp_test2 테이블을 만듭니다.