2. Insert 수행 예제
2.1. Unconditional INSERT ALL
Unconditional INSERT ALL 은 하나의 INSERT 문으로 여러 개의 테이블에 데이터를 입력할 수 있습니다.
여기서 INTO 절과 VALUES 절에 기술한 컬럼의 개수와 데이터 타입은 동일해야 합니다.
-- Unconditional INSERT ALL Syntax
INSERT ALL
INTO tab1 VALUES(col1, col2, col3)
INTO tab2 VALUES(col1, col4, col5)
SELECT col1, col2, col3, col4, col5 FROM tab
아래 예제는 emp 테이블의 데이터를 emp_ename 테이블과 emp_deptno 테이블에 INSERT ALL 을 사용하여 동시에 INSERT 하는
예제입니다.
-- tibero 계정에서 emp 테이블을 이용하여 실습하였습니다.
tbsql tibero/tmax
-- 테스트용 테이블 emp_ename 과 emp_deptno 를 생성합니다.
-- empno, ename, sal 컬럼을 가지는 emp_ename 테이블 생성
CREATE TABLE emp_ename
AS
SELECT empno, ename, sal
FROM emp
WHERE 1=2;
-- empno, deptno, job 컬럼을 가지는 emp_deptno 테이블 생성
CREATE TABLE emp_deptno
AS
SELECT empno, deptno, job
FROM emp
WHERE 1=2;
-- 테이블이 정상적으로 생성되었는지 확인해 봅니다.
SELECT * FROM emp_ename;
SELECT * FROM emp_deptno;
--INSERT ALL 을 이용하여 emp_ename, emp_deptno 테이블에 INSERT 를 해봅니다.
INSERT ALL
INTO emp_ename VALUES (empno, ename, sal)
INTO emp_deptno (empno, deptno, job) VALUES (empno, deptno, job)
SELECT empno, ename, sal, deptno, job
FROM emp
WHERE sal >= 2900;
-- 데이터가 정상적으로 삽입되었는지 확인해 봅니다.
-- sal >= 2900 조건을 만족하는 4 건이 emp_ename, emp_deptno 테이블에
-- INSERT 된 것을 확인 할 수 있다.
SQL> SELECT * FROM emp_ename;
EMPNO ENAME SAL
-------------- ------------- ----------
7566 JONES 2975
7788 SCOTT 3000
7839 KING 5000
7902 FORD 3000
4 rows selected.
SQL> SELECT * FROM emp_deptno;
EMPNO DEPTNO JOB
-------------- -------------- ---------------
7566 20 MANAGER
7788 20 ANALYST
7839 10 PRESIDENT
7902 20 ANALYST
4 rows selected.