본문 바로가기
DBMS/Oracle

[Oracle] INSERT / SELECT 결과 INSERT / INSERT INTO SELECT

by 성은2 2020. 12. 18.

 

INSERT : 테이블에 데이터(행) 등록

원칙적으로 INSERT문은 1회 실행에 1회 삽입 처리

구문
INSERT INTO 테이블명 (열1,열2, 열3 .... ) VALUES (값1, 값2, 값3 .... ) ;

 

 

 

 

구문사용시 주의점

- 열 리스트와 값 리스트의 수, 타입이 일치해야 한다. 

(예시 :  date타입에 String형을 넣으려 하거나, date형과 String형을 삽입할 수 없습니다.

'ORA-01861 리터럴이 형식 문자열과 일치하지 않음' 에러가 발생함)

 

- 테이블의 모든 열에대해 INSERT 하는 경우, 열리스트는 생략 가능 하다.

- 값에 대한 입력이 문자형이면 ' ' (작은 따옴표) 사용

- INSERT 문에서 열명을 생략하면 기본값이 할당 된다. (기본값 설정 안되어 있을시 NULL 처리)

 

 

 

 

1. 다른 테이블에서 데이터를 선택(SELECT) 해서 INSERT 하고 싶을 때

=> INSERT ... SELECT 문을 사용하면 된다.

=> SELECT 구문의 결과 데이터가 삽입되는 것이다.

①테이블에 ②테이블에서 조회한 데이터를 삽입합니다.

구문
INSERT INTO 테이블명 (열1,열2, 열3 .... ) 
SELECT 열1, 열2, 열3 FROM 테이블명 

 

 

 

 

 

 

2. 테이블 구조가 같을때는 SELECT * 처리 가능

구문
INSERT INTO 테이블명
SELECT *
 FROM 테이블명 
WHERE 조건절(생략가능)

 

 

=> 부가 설명

SELECT 문으로 조회한 테이블에 8행의 데이터가 들어있다면, 그 8행의 데이터가 INSERT 하고자 하는 테이블에 추가 되는 것이다. ( 내가 SELECT한 내용 => INSERT문으로 추가할래! )

 

 

'DBMS > Oracle' 카테고리의 다른 글

[Oracle] 조회한 가상 컬럼의 연산  (0) 2021.02.10
[Oracle] UNION, UNION ALL, 집합 연산  (0) 2021.01.13
[Oracle] Create / Alter / Drop  (0) 2020.12.18
[Oracle] 자동 COMMIT, ROLLBACK 처리  (0) 2020.12.09
[Oracle] NVL , NVL2, DECODE  (0) 2020.12.09