오라클 다양한 INSERT INTO 방법
INSERT문을 사용하면 테이블에 데이터를 입력할 수가 있습니다.
물론 해당테이블에 INSERT 권한이 있어야 입력이 가능합니다.
이 포스팅에서는 다양한 방법으로 INSERT 처리하는 법을 알아보겠습니다.
INSERT 문법
INSERT INTO dml_table_expression_clause [ t_alias ]
[ (column [, column ]...) ]
VALUES ({ expr | DEFAULT }
[, { expr | DEFAULT } ]...
)
INSERT 예제
INSERT INTO EMP e ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO ) VALUES ( '7499','ALLEN','SALESMAN','7698',SYSDATE,'1600','300','30');
INSERT INTO EMP e ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO ) VALUES ( '7521','WARD' ,'SALESMAN','7698',SYSDATE,'1250','500','30');
INSERT INTO EMP e VALUES ( '7499','ALLEN','SALESMAN','7698',SYSDATE,'1600','300','30');
INSERT INTO EMP e VALUES ( '7521','WARD' ,'SALESMAN','7698',SYSDATE,'1250','500','30');
INSERT INTO EMP e VALUES ( '7369','SMITH','CLERK','7902',SYSDATE,'800',NULL,'20');
INSERT INTO EMP e ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO ) VALUES ( '7369','SMITH','CLERK','7902',SYSDATE,'800','20');
일반적인 INSERT 방법은 위의 문법으로 입력을 하게 됩니다.
아래 두줄의 차이점은 전체 컬럼의 값을 넣느냐 넣지 않느냐로 비교할 수 있는데
5번 라인은 전체 컬럼 기준으로 COMM 컬럼에 NULL 을 명시하여 입력한 CASE 이며
6번 라인은 INSERT 할 컬럼에서 COMM 컬럼을 제외한 컬럼에 직접 값을 입력한 CASE 입니다.
( 동일한 결과를 확인 할 수 있습니다. )
테이블 생성과 데이터 입력을 한번에!
CREATE TABLE SCOTT.EMP_BACKUP AS
SELECT *
FROM SCOTT.EMP
;
또는 테이블 백업 시 데이터도 그대로 넣어야 할 경우도 있습니다.
위와 같이 생성 시 테이블 생성 + 데이터 입력이 동시에 이루어지게 됩니다.
CREATE TABLE SCOTT.EMP_BACKUP AS
SELECT EMPNO
, ENAME
, JOB
, MGR
, 2500 AS SAL
, COMM
, DEPTNO
FROM SCOTT.EMP
;
INSERT 와 마찬가지로 데이터는 CREATE TABLE [table_name] AS SELECT 문에서도 원하는 컬럼만 생성하여 컬럼을 생성할 수 있습니다.
이 때, 컬럼의 ALIAS 는 필수입니다!
일반적으로 테이블 백업을 할 때는 위의 방법을 사용할것으로 예상됩니다.
다수의 INSERT 처리
INSERT INTO EMP_BAK
SELECT * FROM EMP
;
INSERT 할 테이블을 지정 후 SELECT 결과를 INSERT 합니다.
INSERT INTO SCOTT.EMP_BAK ( EMPNO, ENAME, JOB, SAL )
SELECT EMPNO, ENAME, JOB, SUM(SAL)
FROM SCOTT.EMP
GROUP BY EMPNO, ENAME, JOB
;
위와 같이 가공한 데이터를 INSERT 할 때 주로 사용합니다.
다수 테이블의 INSERT 처리
INSERT ALL
INTO EMP_BAK ( EMPNO, ENAME, JOB )
INTO EMP_BAK2 ( EMPNO, ENAME, JOB )
INTO EMP_BAK3 ( EMPNO, ENAME, JOB )
INTO EMP_BAK4 ( EMPNO, ENAME, JOB )
INTO EMP_BAK5 ( EMPNO, ENAME, JOB )
SELECT EMPNO, ENAME, JOB
FROM EMP
;
사실 다수 테이블에 한번에 INSERT 할 일이 없어서 실제로 써본적은 없지만 이런 방법이 있다는 것만 알아도 될 것 같습니다.
엑셀을 이용한 다수의 INSERT 처리
이건 INSERT 뿐만 아니라 여러방면으로 활용될 수 있는 방법인데
엑셀의 각 열에 데이터를 입력 후 수식을 이용해 문장을 만든 후 INSERT 처리하는 방법입니다.
선행작업 : A B C 열에 데이터를 입력합니다.
-- 수식
="INSERT INTO EMP VALUES('"&A1&"',"&"'"&B1&"',"&"'"&C1&"');"
="INSERT INTO EMP VALUES('"&A2&"',"&"'"&B2&"',"&"'"&C2&"');"
="INSERT INTO EMP VALUES('"&A3&"',"&"'"&B3&"',"&"'"&C3&"');"
-- 값 복사
INSERT INTO EMP VALUES('7369','SMITH','CLERK');
INSERT INTO EMP VALUES('7499','ALLEN','SALESMAN');
INSERT INTO EMP VALUES('7521','WARD','SALESMAN');
값 복사를 통해 위의 결과를 한번에 실행하여 INSERT 가능합니다.
이상으로 테이블 데이터 INSERT 하는 방법에 대해 알아보았습니다.