여러 개의 INSERT문을 한 번에 처리
먼저 실습을 위한 대상 테이블을 만들어 보자.
입력
CREATE TABLE ex7_3 (
emp_id NUMBER,
emp_name VARCHAR2(100));
결과
table ex7_3이(가) 생성되었습니다.
입력
CREATE TABLE ex7_4 (
emp_id NUMBER,
emp_name VARCHAR2(100));
결과
table EX7_4이(가) 생성되었습니다.
ex7_3 테이블에 두 개의 로우를 입력해야 한다면 다음과 같이 두 개의 INSERT문을 사용하면 된다.
입력
INSERT INTO ex7_3 VALUES (101, '홍길동');
결과
1개 행 이(가) 삽입되었습니다.
입력
INSERT INTO ex7_3 VALUES (102, '김유신');
결과
1개 행 이(가) 삽입되었습니다.
하지만 다음과 같이 INSERT ALL 구문을 사용하면 한 번에 여러 개의 로우를 입력할 수 있다.
입력
INSERT ALL
INTO ex7_3 VALUES (103, '강감찬')
INTO ex7_3 VALUES (104, '연개소문')
SELECT *
FROM DUAL;
결과
2개 행 이(가) 삽입되었습니다.
다중 테이블 INSERT 구문을 사용할 때 반드시 서브 쿼리가 동반되어야 하므로 위 쿼리에서는 맨 마지막에 의미 없는 DUAL을 선택하도록 했다. 다음과 같이 문장을 작성해도 위와 동일한 결과를 얻을 수 있다.
입력
INSERT ALL
INTO ex7_3 VALUES (emp_id, emp_name)
SELECT 103 emp_id, '강감찬' emp_name
FROM DUAL
UNION ALL
SELECT 104 emp_id, '연개소문' emp_name
FROM DUAL;
결과
2개 행 이(가) 삽입되었습니다.
이처럼 다중 테이블 INSERT 구문은 여러 개의 INSERT문을 한 문장으로 처리할 수 있기도 하지만, 이와 동시에 여러 개의 테이블에 INSERT를 수행할 수도 있다. 이번에는 ex7_3 뿐만 아니라 ex7_4 테이블에도 데이터를 넣어 보자.
입력
INSERT ALL
INTO ex7_3 VALUES (105, '가가가')
INTO ex7_4 VALUES (105, '나나나')
SELECT *
FROM DUAL;
결과
2개 행 이(가) 삽입되었습니다.
두 테이블의 데이터를 확인해 보면 데이터가 정상적으로 입력된 것을 볼 수 있다.