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 |