일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jquery
- 자바스크립트
- Eclipse
- 오라클
- 주식
- 맥
- 주식 청약
- Stock
- 공모주
- css
- java
- Stock ipo
- 자바
- codeigniter
- 공모주 청약 일정
- 6월 공모주 청약 일정
- Oracle
- 주식 청약 일정
- SQL
- linux
- 리눅스
- 코드이그나이터
- IPO
- html
- php
- 제이쿼리
- MYSQL
- 공모주 청약
- JavaScript
- 7월 공모주 청약 일정
- Today
- Total
개발자의 끄적끄적
[sql/oracle] 오라클 다양한 INSERT INTO 방법 본문
[sql/oracle] 오라클 다양한 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 가능합니다.
'개발 > sql' 카테고리의 다른 글
[OracleDB] DB Open 시 발생되는 ORA-03113 에 대한 조치방법 [펌] (0) | 2020.08.03 |
---|---|
[oracle]오라클 select해서 insert 하기 [펌] (0) | 2020.08.02 |
[SQL][DDL] Foreign Key : 외래 키 (0) | 2020.07.31 |
[Stored Procedure] 2. MySQL Stored Procedure 시작하기 [펌] (0) | 2020.07.31 |
[MySQL] TRIGGER(트리거) 및 DELIMITER(델리미터) 개념과 사용법 [펌] (0) | 2020.07.30 |