코드 10-11은 INSERT 문에 SELECT 문이 결합된 형태로, emp_test 테이블에서 사번이 1001과 1002인 데이터를 조회해 그 결과를 emp_test2 테이블에 넣습니다. 2건이 조회되므로 emp_test2 테이블에도 2건의 데이터가 입력됩니다. 계속 강조하지만, 입력할 칼럼과 실제 들어갈 값의 개수, 순서, 데이터 타입이 일치해야 합니다. 따라서 입력 대상인 emp_test2 테이블의 칼럼과 SELECT 절에 명시한 emp_test 테이블의 칼럼을 맞춰야 한다는 점을 꼭 기억하세요.
코드 10-12
INSERT INTO emp_test2
SELECT *
FROM emp_test
WHERE emp_no IN (1003, 1004);
SELECT *
FROM emp_test2;
실행결과
코드 10-12는 INSERT 문에 입력할 칼럼을 명시하지 않았습니다. 이는 emp_test2 테이블의 모든 칼럼에 값을 입력하겠다는 뜻이죠. 그래서 SELECT 절에서도 *를 명시해 전체 칼럼을 조회합니다. emp_test2 테이블과 emp_test 테이블은 구조가 똑같아서 오류 없이 성공합니다. 두 테이블의 구조가 다르면, 예를 들어 칼럼 수가 다르거나 칼럼 수와 데이터 타입이 같더라도 테이블 정의에서 명시한 칼럼 순서가 다르면 오류가 발생합니다.