INSERT INTO SELECT
INSERT INTO SELECT 명령문은 한 테이블의 데이터를 복사하고 다른 테이블에 삽입한다.
INSERT INTO SELECT 명령문을 사용하려면 원본 테이블과 대상 테이블의 데이터 형식이 일치해야 한다.
⭐ 대상 테이블의 기존 레코드는 영향을 받지 않는다.
구문
한 테이블의 모든 열을 다른 테이블로 복사
INSERT INTO table2 SELECT * FROM table1 WHERE condition;
한 테이블의 일부 열만 다른 테이블로 복사
INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition;
데이터베이스 예시
고객 테이블
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
공급업체 테이블
SupplierID | SupplierName | ContactName | Address | City | Postal Code | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly’s Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
예시
“공급자”를 “고객”에 복사
데이터로 채워지지 않은 열에는 NULL이 포함된다.
INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers;
기본 예시
You have made changes to the database. Rows affected: 29“공급자”를 “고객”으로 복사
모든 열을 채운다.
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
기본 예시
You have made changes to the database. Rows affected: 29독일 공급업체만 “고객”에 복사
INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers WHERE Country='Germany';
기본 예시
You have made changes to the database. Rows affected: 3참고
W3C School - SQL INSERT INTO SELECT Statement
W3C School - SQL Tutorial