오라클 다양한 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 하는 방법에 대해 알아보았습니다.
'IT > Oracle' 카테고리의 다른 글
오라클 MERGE 간단한 예제로 한번에 INSERT, UPDATE 처리 (5) | 2017.07.24 |
---|---|
오라클 SUBSTR 함수 문법과 예제로 마스터하기 (0) | 2017.07.13 |
오라클 LOCK 걸린 개체 확인 및 LOCK 해제 (10) | 2017.06.25 |
오라클 drop 된 테이블 복원 ( Flashback ) Recycle Bin 에서 테이블 복원 (4) | 2017.06.24 |
오라클 drop 된 테이블 복원 ( Flashback ) Recycle Bin 에서 객체제거 (0) | 2017.06.23 |