본문으로 바로가기

MySQL INSERT INTO SELECT

category 데이터베이스/MySQL 2018. 12. 27. 17:48

MySQL INSERT INTO SELECT

 

마찬가지로 한 테이블 데이터를 다른 테이블에 삽입할 때 쓰입니다.

 

단 조건으로 아래와 같습니다.

  • 목표 테이블의 데이터 유형이 일치
  • 목표 테이블의 기존 레코드 영향 없음

INSERT INTO SELECT 구문

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

이렇게 구문이 이루어집니다.

 

목표 테이블은 table2이고 복사할 테이블은 table1입니다.

 

일부 열만 복사하고 싶으면 아래와 같습니다.

 

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

즉 table1의 특정 열(column1,...)을 복사합니다.

 

 

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

이와 같은 테이블이 있습니다.

 

공급자 테이블에서 고객 테이블로 복사하기 위해서는

 

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;

 

대신 데이터 유형이 동일해야겠죠!!

 

또 모든 열을 복사하기 위해선

 

 

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROMSuppliers;

 전체에 대해서 열을 모두 써줍니다.

 

마찬가지로 where 절을 써서 특정 조건에 해당하는 열만을 복사 할 수 있습니다.

 

 

 

'데이터베이스 > MySQL' 카테고리의 다른 글

MySQL 저장 프로시저  (0) 2018.12.27
MySQL CASE  (0) 2018.12.27
MySQL 테이블 복사  (0) 2018.12.24
MySQL ANY/ALL  (1) 2018.12.24
MySQL EXISTS  (0) 2018.12.23