[SQL] SELECT 후 INSERT

감자도리·2022년 12월 4일
0

SQL

목록 보기
2/6

용도

레코드를 조회해서 해당 인자 값을 참조해서 새로운 레코드를 INSERT할때 쓰인다.
SELECT INSERT 해서 여러행을 입력할 수 있다.




예시: 해적 테이블에서 해적번호 8000번인 애를 새로 집어넣기

SELECT절의 컬럼과 INSERT 할 컬럼이 일치하는 경우

pirate 테이블의 컬럼을 선언하지 않고 insert 가능

INSERT INTO pirate
SELECT 8000
	,'LUFFY'
    ,a.name
    ,a.age
    ,a.prize
    ,a.role
FROM pirate p
WHERE pirate_no = 5000

pirate_no 순번을 붙일경우에는 서브 쿼리를 사용하여 채번가능

INSERT INTO pirate
SELECT (SELECT MAX(pirate_no)+1 FROM pirate)
	,'zoro'
    ,a.age
    ,a.prize
    ,a.role
FROM pirate p
WHERE pirate_no = 5000

SELECT절의 컬럼과 INSERT 할 컬럼이 불일치하는 경우

pirate 테이블 컬럼 선언해야함

INSERT INTO pirate (pirate_no,name,age)
FROM pirate p
WHERE pirate_no = 5000

SELECT 결과에 따라 다른 테이블에 INSERT

INSERT ALL
WHEN role = 'captain' THEN
	INTO pirate_captain (cap_no,cap_age,cap_name)
    VALUES (pirate_no,age,name)
WHEN role = 'doctor' THEN
	INTO pirate_captain (doc_no,doc_age,doc_name)
    VALUES (pirate_no,age,name)
WHEN role = 'mate' THEN
	INTO pirate_captain (mate_no,mate_age,mate_name)
    VALUES (pirate_no,age,name)

출처:https://gent.tistory.com/404

0개의 댓글