기술 정보
home
채널 소개
home

Tibero 다중 테이블 Insert 수행 예제 (2)

문서 유형
기술 정보
분야
관리/환경설정
키워드
다중 테이블
INSERT ALL
1 more property

개요

Tibero에서 Conditional INSERT ALL 구문을 사용하여 하나의 쿼리로 여러 테이블에 데이터를 동시에 삽입하는 예제를 안내합니다.

Conditional INSERT ALL

Conditional INSERT ALL을 사용하면 특정 조건에 맞는 행만 원하는 테이블에 입력할 수 있습니다.
서브쿼리로의 결과 행을 WHEN … THEN 절에서 체크한 후 조건에 맞는 절에 기술된 테이블에 INSERT 작을 수행합니다.
-- Conditional INSERT ALL Syntax INSERT ALL WHEN 조건절 1 THEN INTO [테이블 1] VALUES (컬럼 1,컬럼 2,...) WHEN 조건절 2 THEN INTO [테이블 2] VALUES (컬럼 1,컬럼 2,...) ........ ELSE INTO [테이블 3] VALUES (컬럼 1,컬럼 2,...) Subquery;
SQL
복사

방법

아래는 부서 별로 연봉인상율을 다르게 하여 각각의 테이블에 입력하는 예제입니다.
1. 테스트용 테이블 생성
-- 테스트용 테이블 emp_dept10, emp_dept20, emp_dept30 을 생성합니다. DROP TABLE emp_dept10; DROP TABLE emp_dept20; DROP TABLE emp_dept30; CREATE TABLE emp_dept10 AS SELECT deptno, empno, ename, job, sal FROM emp WHERE 1=2; CREATE TABLE emp_dept20 AS SELECT deptno, empno, ename, job, sal FROM emp WHERE 1=2; CREATE TABLE emp_dept30 AS SELECT deptno, empno, ename, job, sal FROM emp WHERE 1=2;
SQL
복사
2. 테이블 생성 확인
-- 테이블이 정상적으로 생성되었는지 확인해 봅니다. SELECT * FROM emp_dept10; SELECT * FROM emp_dept20; SELECT * FROM emp_dept30;
SQL
복사
3. 부서별 연봉 인상 비율에 따라 INSERT
-- 부서별로 연봉 인상율을 다르게 하여 각각의 테이블에 INSERT 합니다. -- deptno = 10 → 10% 인상하여 emp_dept10 테이블에 INSERT -- deptno = 20 → 20% 인상하여 emp_dept20 테이블에 INSERT -- deptno = 30 → 30% 인상하여 emp_dept30 테이블에 INSERT INSERT ALL WHEN deptno = 10 THEN INTO emp_dept10 VALUES (deptno, empno, ename, job, ROUND(sal * 1.1)) WHEN deptno = 20 THEN INTO emp_dept20 VALUES (deptno, empno, ename, job, ROUND(sal * 1.2)) WHEN deptno = 30 THEN INTO emp_dept30 VALUES (deptno, empno, ename, job, ROUND(sal * 1.3)) SELECT deptno, empno, ename, job, sal FROM emp;
SQL
복사
4. 결과 확인
-- 테이블에 데이터가 정상적으로 등록 되었는지 확인합니다. SELECT d.deptno, d.sal "10%_UP_SALARY", e.sal "ORIGINAL_SALARY" FROM emp_dept10 d, emp e WHERE d.empno = e.empno; -- 결과 예시 DEPTNO 10%_UP_SALARY ORIGINAL_SALARY -------- -------------- ---------------- 10 2695 2450 10 5500 5000 10 1430 1300 3 rows selected. SELECT d.deptno, d.sal "20%_UP_SALARY", e.sal "ORIGINAL_SALARY" FROM emp_dept20 d, emp e WHERE d.empno = e.empno; -- 결과 예시 DEPTNO 20%_UP_SALARY ORIGINAL_SALARY -------- -------------- ---------------- 20 960 800 20 3570 2975 20 3600 3000 20 1320 1100 20 3600 3000 5 rows selected. SELECT d.deptno, d.sal "30%_UP_SALARY", e.sal "ORIGINAL_SALARY" FROM emp_dept30 d, emp e WHERE d.empno = e.empno; -- 결과 예시 DEPTNO 30%_UP_SALARY ORIGINAL_SALARY -------- -------------- ---------------- 30 2080 1600 30 1625 1250 30 1625 1250 30 3705 2850 30 1950 1500 30 1235 950 6 rows selected.
SQL
복사
아래는 조건에 사용하는 컬럼을 다르게 하여 각각의 테이블에 입력하는 예제입니다.
두 조건을 모두 만족하는 7900 JAMES 는 첫번째 조건을 만족하므로 emp_empno 테이블에 입력되었고, 두번째 조건 또한 만족하므로 emp_empno 테이블에도 입력이 됩니다.
1. 테스트용 테이블 생성
-- 테스트용 테이블 emp_empno, emp_sal 을 생성합니다. DROP TABLE emp_empno; DROP TABLE emp_sal; CREATE TABLE emp_empno AS SELECT empno, ename, job, sal, deptno FROM emp WHERE 1=2; CREATE TABLE emp_sal AS SELECT empno, ename, job, sal, deptno FROM emp WHERE 1=2;
SQL
복사
2. 테이블 생성 확인
-- 테이블이 정상적으로 생성되었는지 확인해 봅니다. SELECT * FROM emp_empno; SELECT * FROM emp_sal;
SQL
복사
3. 조건에 따른 INSERT ALL 수행
-- empno >= 7876 인 사원은 emp_empno 테이블에 INSERT -- sal <= 1000 인 사원은 emp_sal 테이블에 INSERT INSERT ALL WHEN empno >= 7876 THEN INTO emp_empno VALUES (empno, ename, job, sal, deptno) WHEN sal <= 1000 THEN INTO emp_sal VALUES (empno, ename, job, sal, deptno) SELECT empno, ename, job, sal, deptno FROM emp;
SQL
복사
4. 결과 확인
SELECT * FROM emp_empno; EMPNO ENAME JOB SAL DEPTNO ------- ------ --------- ---- ------- 7876 ADAMS CLERK 1100 20 7900 JAMES CLERK 950 30 7902 FORD ANALYST 3000 20 7934 MILLER CLERK 1300 10 4 rows selected. SELECT * FROM emp_sal; EMPNO ENAME JOB SAL DEPTNO ------- ------ ------- ---- ------- 7369 SMITH CLERK 800 20 7900 JAMES CLERK 950 30 2 rows selected.
SQL
복사