- INSERT ALL : 한꺼번에 여러 개의 테이블에 데이터를 입력하거나, 1개의 테이블(테이블X)로부터 다른 여러 개의 테이블(테이블A, 테이블B,...)로 데이터를 복사하여 입력할 때 사용
- INSERT FIRST : ALL 대신에 FIRST를 사용할 경우 첫번째 조건을 만족하면 그 뒤 조건은 묻지 않고 빠져 나옴.
>> INSERT ALL, FIRST는 반드시 서브 쿼리와 함께 사용해야 한다!!
1. 서로 다른 테이블에 각각 다른 데이터 입력
INSERT ALL
INTO 테이블A (컬럼A1, 컬럼A2) VALUES ( 컬럼A1 값, 컬럼A2 값 )
INTO 테이블B (컬럼B1, 컬럼B2) VALUES ( 컬럼B1 값, 컬럼B2 값 )
INTO 테이블C (컬럼C1, 컬럼C2) VALUES ( 컬럼C1 값, 컬럼C2 값 )
SELECT * FROM DUAL ; -- 가상테이블 DUAL, select(서브쿼리) 필수
2. 서로 다른 테이블에 같은 데이터 입력
: 테이블X의 행 중에 조건 X를 만족하는 행들을 테이블 A, B에 각각 입력
INSERT ALL
INTO 테이블A (컬럼A1, 컬럼A2)
INTO 테이블B (컬럼B1, 컬럼B2)
SELECT 컬럼X1, 컬럼X2
FROM 테이블X
WHERE 조건X ;
2-1. 서로 다른 테이블에 조건별 데이터 입력
-- ALL : 모든 조건 확인, 조건에 맞는 모든 테이블에 삽입
INSERT ALL
WHEN 조건1 THEN
INTO 테이블A VALUES (컬럼1, 컬럼2, 컬럼3)
WHEN 조건2 THEN
INTO 테이블B VALUES (컬럼1, 컬럼2, 컬럼3)
ELSE
INTO 테이블C VALUES (컬럼1, 컬럼2, 컬럼3)
SELECT x.컬럼1, x.컬럼2, x.컬럼3
FROM 테이블X x
WHERE 조건X
-- FIRST : 조건1을 만족하면 테이블A에 입력, 테이블B,C는 참거짓과 상관없이 아무 값도 입력되지 않음
INSERT FIRST
WHEN 조건1 THEN
INTO 테이블A VALUES (컬럼1, 컬럼2, 컬럼3)
WHEN 조건2 THEN
INTO 테이블B VALUES (컬럼1, 컬럼2, 컬럼3)
ELSE
INTO 테이블C VALUES (컬럼1, 컬럼2, 컬럼3)
SELECT x.컬럼1, x.컬럼2, x.컬럼3
FROM 테이블X x
WHERE 조건X
3. 한 테이블에 다중 행 입력 : 컬럼명 생략 가능
INSERT INTO 테이블 (컬럼1, 컬럼2)
SELECT 값1, 값2 FROM DUAL
UNION ALL
SELECT 값1, 값2 FROM DUAL
UNION ALL
...
SELECT 값1, 값2 .. FROM DUAL;
sql 처음 배울 땐 이걸 몰라서 문장 하나하나 다 쳐서 입력했었는디.. 왜 그랬냐
'SQL' 카테고리의 다른 글
여러행 문자열 합치기 (0) | 2023.08.31 |
---|---|
[Oracle] 연습용 테이블 dept, emp (0) | 2023.04.26 |
[Oracle] 모든 테이블 한번에 삭제 / 여러 쿼리 한번에 실행 (0) | 2023.04.26 |
[Oracle] SQL 기본 문법 정리 (0) | 2023.04.25 |
댓글