프로그래밍/DB

[DB] MSSQL SELECT INTO, INSERT INTO .. SELECT 사용방법 및 차이점

ss-pro 2020. 10. 18. 22:48
반응형

SELECT INTO는 테이블의 검색결과를 새로운 테이블로 만들어서 보내기를 할때사용한다. INSERT INTO는 테이블 검색를 이미 생성되어있는 테이블로 전송할때 사용합니다. 먼저 SELECT INTO를 사용하여 새로운 테이블로 데이터를 전송해보도록 하겠습니다.  

1. SELECT INTO 사용방법
새로만들어질 테이블(SalesLT.Address_NEW1)을  FROM절 앞에두고 뒷쪽에 원본테이블을 입력후 쿼리를 실행합니다. 

1
2
3
4
5
-- 1.전체테이블복사
SELECT  * INTO SalesLT.Address_NEW1 FROM SalesLT.Address
 
-- 2.검색결과복사 
SELECT  * INTO SalesLT.Address_NEW2 FROM SalesLT.Address WHERE City ='Toronto'

SalesLT.Address_New2테이블을 보면 아래와 같이 City값이 Toronto인데이터만 복사된것을 확인할수 있습니다. 


2. INSERT INTO ... SELECT 사용방법
SELECT INTO와 동일하지만 테이블이 없는 상태에서는 아래와 같이 오류가 나타납니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 1. 전체데이터복사
INSERT INTO SalesLT.Address_NEW2 ( 
    [AddressID],[AddressLine1],[AddressLine2],[City],[StateProvince],[CountryRegion],[PostalCode]
    ,[rowguid],[ModifiedDate]
)
SELECT  
    [AddressID],[AddressLine1],[AddressLine2],[City],[StateProvince],[CountryRegion],[PostalCode]
    ,[rowguid]
    ,[ModifiedDate] FROM SalesLT.Address
 
-- 2. 검색결과 데이터 복사
INSERT INTO SalesLT.Address_NEW2 ( 
    [AddressID],[AddressLine1],[AddressLine2],[City],[StateProvince],[CountryRegion],[PostalCode]
    ,[rowguid],[ModifiedDate]
)
SELECT  
    [AddressID],[AddressLine1],[AddressLine2],[City],[StateProvince],[CountryRegion],[PostalCode]
    ,[rowguid]
    ,[ModifiedDate] FROM SalesLT.Address
WHERE City = 'Toronto'

SELECT INTO와 INSERT INTO.. SELECT는 내용은 거의 유사하지만 테이블을 생성하면서 복사할것인가 이미 생성되어진 테이블에 복사할지에 대한부분에 차이가 있습니다. 해당부분을 주의하셔서 사용하시면 될것 같습니다. 

반응형