database/Oracle

[Oracle] DML sub query

솧이 2022. 9. 2. 08:04

INSERT ALL의 개념

INSERT ALL은 한꺼번에 여러 개의 테이블에 데이터를 입력하거나, 1개의 테이블(테이블A)로부터 다른 여러 개의

테이블(테이블X, 테이블Y,...)로 데이터를 복사하여 입력할 때 사용합니다.

즉, INSERT ALL은 여러개의 테이블에 동시에 데이터를 입력하기 위해 사용하는 구문입니다.

구문
특징
INSERT INTO
1개의 테이블에 1개의 행을 입력하기
INSERT SELECT
테이블2에서 검색한 컬럼의 데이터들을 테이블1의 컬럼에 삽입(복사+붙여넣기)
INSERT ALL INTO
여러 테이블에 여러 행 입력, 다른 테이블에 동시에 같은 행 입력하기

 

 

* insert into의 value 대신에 sub query를 넣을 수 있다

-- 서브쿼리, DML에서도 사용이 가능하다
CREATE TABLE test_emp_a (
	emp_id NUMBER,
	emp_name VARCHAR2(100)
);


CREATE TABLE test_emp_b (
	emp_id NUMBER,
	emp_name VARCHAR2(100)
);

DROP TABLE test_emp_a;
DROP TABLE test_emp_b;


-- 한 개 ROW씩 INSERT. DML 결과는 정수 나온다 -> 1 나옴
INSERT INTO test_emp_a VALUES(101, '아이언');

INSERT INTO test_emp_b VALUES(101, '캡틴그놈');

SELECT * FROM test_emp_a;
SELECT * FROM test_emp_b;

INSERT ALL -- 여러 개의 테이블에 데이터를 넣을 때!
	INTO test_emp_a values(102, '블랙위도우')
	INTO test_emp_b values(202, '비젼')
SELECT * FROM dual;


-- insert 할 때 서브쿼리로 insert 가능, values 대신에!
INSERT INTO test_emp_a (SELECT 400, '홍길동' FROM dual);

 

 

테이블 뻥튀기

INSERT INTO test_emp_a(SELECT * FROM test_emp_a);

 

 

create table에도 서브쿼리 사용

CREATE TABLE test_phonebook
AS 
SELECT * FROM phonebook;


SELECT * FROM test_phonebook;

 

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

[Oracle] 집합연산자 set operator  (0) 2022.09.02
[Oracle] rownum  (0) 2022.09.02
[Oracle] 위치별 sub query  (0) 2022.09.02
[Oracle] 상호연관 sub query  (0) 2022.09.02
[Oracle] 다중 컬럼 sub query  (0) 2022.09.02