괴발개발 개발하다
[Oracle] 오라클 SELECT 해서 INSERT 하는 방법 본문
1. SELECT 절의 컬럼과 INSERT 테이블의 컬럼이 일치하는 경우
INSERT INTO emp
SELECT 8000
, 'GENT'
, a.job
, a.mgr
, TO_DATE('2021-05-03', 'YYYY-MM-DD')
, a.sal
, a.comm
, a.deptno
FROM emp a
WHERE empno = 7698
-> emp 테이블의 컬럼을 선언하지 않고 INSERT가 가능하다.
2. SELECT 절의 컬럼과 INSERT 테이블의 컬럼이 불일치하는 경우
INSERT INTO emp (empno, ename, job, mgr, hiredate)
SELECT 8001
, 'GENT'
, a.job
, a.mgr
, TO_DATE('2021-05-03', 'YYYY-MM-DD')
FROM emp a
WHERE empno = 7698
-> emp 테이블의 컬럼을 선언해야 한다.
3. SELECT 결과의 조건에 따라서 서로 다른 테이블에 INSERT 하는 방법
INSERT ALL
WHEN job = 'MANAGER' THEN
INTO emp_man (empno, deptno, sal, comm)
VALUES(empno, deptno, sal, comm)
WHEN job = 'SALESMAN' THEN
INTO emp_sal (empno, deptno, sal, comm)
VALUES(empno, deptno, sal, comm)
ELSE
INTO emp_etc (empno, deptno, sal, comm)
VALUES(empno, deptno, sal, comm)
SELECT empno, job, deptno, sal, comm
FROM emp
-> SELECT 결과에 따라서 서로 다른 테이블에 INSERT해야하는 경우 INSERT ALL을 사용하면 하나의 쿼리문으로 작업이 가능하다.
< 출처 >