INSERT ~ SELECT 형태
INSERT INTO [스키마.]테이블명 (컬럼1, 컬럼2, ...)
SELECT 문;
마지막으로 알아 볼 INSERT문의 형태는 다른 테이블이나 뷰의 조회 결과로 나온 데이터를 또 다른 테이블에 넣는 형식이다. 실제 현장에서 가장 많이 사용하는 INSERT 구문이다. 먼저 실습용 테이블을 만들어 보자.
입력
CREATE TABLE ex3_2 (
emp_id NUMBER,
emp_name VARCHAR2(100));
결과
table EX3_2이(가) 생성되었습니다.
사원 테이블에서 월급이 5000 이상인 사원의 사원번호와 사원명을 조회한 결과를 ex3_2 테이블에 넣어 보자.
입력
INSERT INTO ex3_2 ( emp_id, emp_name )
SELECT employee_id, emp_name
FROM employees
WHERE salary > 5000;
결과
58개 행 이(가) 삽입되었습니다.
INSERT~SELECT 형태 역시 컬럼 순서와 데이터 타입을 맞추어야 한다. 그런데 데이터 타입을 맞추지 않아도 INSERT가 성공하는 경우가 있다. 다음 예제를 보자.
입력
INSERT INTO ex3_1 (col1, col2, col3)
VALUES (10, '10', '2014-01-01');
결과
1개 행 이(가) 삽입되었습니다.
이상하다. 데이터 타입이 다른 데이터를 넣었는데도 오류가 나지 않고 제대로 입력되었다. col1은 문자 타입인데 숫자를, col2는 숫자 타입인데 문자를, col3는 날짜 타입인데 문자를 넣었는데 오류가 나지 않았다. 어떻게 된 일일까? 오류가 나지 않은 것은 바로 ‘묵시적 형변환’ 때문이다. 묵시적 형변환이란 자동으로 데이터 타입이 변환되는 것을 의미한다. col1에 숫자 10을 입력했지만, 내부적으로 숫자가 아닌 문자 ‘10’으로 자동 형변환이 일어나 데이터가 입력된 것이다. 이에 반해 사용자가 직접 데이터 타입을 변환하는 것을 ‘명시적 형변환’이라고 한다.