728x90
반응형
INSERT ALL
여러 건의 insert 문을 실행할 때 INSERT ALL 구문을 사용하면 한 번에 처리할 수 있다.
한 테이블에 여러 개의 로우를 입력할 수도 있지만
여러 개의 테이블에 INSERT를 수행할 수도 있다.
예를 들어보자.
우선 예시를 위해 테이블 두개를 만들었다.

test_tb1 테이블에 두 개의 로우를 입력을 해야 한다면 다음과 같은 두 개의 INSERT 문을 사용한다.
INSERT INTO test_tb1 VALUES(001, '김구');
INSERT INTO test_tb1 VALUES(002, '이순신');
하지만 INSERT ALL 구문을 사용하면 한 번에 처리할 수 있다.


다중 테이블 INSERT 구문을 사용할 때는 반드시 서브 쿼리가 동반되어야 한다.
따라서 마지막에 의미가 없는(단지 에러가 안나기 위한) SELECT 1 FROM DUAL 구문이 들어갔다.
참고로 이는 UNION ALL 구문으로도 할 수 있는데 예시를 보자.


쿼리를 보면 금방 이해할 수 있다.
이제 동시에 여러 개의 테이블에 INSERT를 해보자.
달라지는 점은 없고 테이블 이름만(INTO 쿼리만) 바꿔주면 된다.


물론 INSERT 하는 테이블의 레이아웃이 전부 같을 필요는 없고
당연히 INTO 절 이하의 문법은 맞아야 된다.(INSERT 하는 컬럼의 개수나 타입 등)