본문 바로가기
컴퓨터관련/MS-SQL

MSSQL에서 SELECT INTO, INSERT INTO SELECT

by 빛과 어둠사이 2020. 6. 24.
728x90
반응형
SMALL

오늘은 MSSQL에서의

SELECT INTO,

INSERT INTO SELECT 에 대해서

정리를 해보도록 하겠습니다.



1. SELECT INTO

SELECT INTO는 기존에 없던 테이블에

테이블을 만들면서

데이터까지 한번에 입력하는 것입니다.

테이블을 복사하는 것이라고 보시면 되실 것 같습니다.


실제로 사용하는 것을

확인해보도록 하겠습니다.


저는 test_member_tmp 라는 테이블을

테스트로 만들어서

데이터를 넣도록 해보겠습니다.

그렇게하기 위해서

우선, test_member_tmp라는 테이블이 있는지

조회를 해보았습니다.


select * from test_member_tmp


위처럼 조회를 해보았습니다.

그리고 실행을 하면

결과는 아래처럼 나오게 됩니다.



위처럼 나오면서 테이블이 없는 것을

확인할 수 있습니다.


그러면 이제 SELECT INTO 를 사용하여

테이블을 복사하는 것을

해보도록 하겠습니다.


SELECT INTO 사용하는 방법은

다음과 같습니다.


select 컬럼 into 새로운테이블명
from 기존테이블명
where 조건


위와 같은 방식으로

사용을 해주시면 되십니다.


실제 사용 예제를

확인해보도록 하겠습니다.


select * into test_member_tmp
from test_member
where id = 'aaa'


위와 같이 쿼리를 작성하였습니다.

그리고 실행을 하면

결과는 다음과 같이 나오게 됩니다.



1개 행이 적용되었다고

나와지네요.

그러면 이제 test_member_tmp 테이블을

조회해보도록 하겠습니다.


select * from test_member_tmp


위처럼 해서 조회를 했습니다.

그랬더니 결과는 아래와 같이 나왔습니다.



위처럼 1개의 데이터가 

테이블복사가 되면서 들어가진 것으로

확인할 수 있습니다.





2. INSERT INTO SELECT

이번에는 INSERT INTO SELECT에 대해서

정리를 해보도록 하겠습니다.


INSERT INTO SELECT는

데이터를 조회해서

결과를 INSERT 하는 것입니다.


사용하는 방법은

다음과 같습니다.


insert into 입력할테이블 (컬럼_생략가능)
select 컬럼
from 조회테이블
where 조건


위와 같은 방법으로

쿼리를 작성해주시면 되십니다.


실제 사용 예제는 다음과 같습니다.


insert into test_member_tmp 
select *
from test_member
where id = 'bbb'


위와 같이 쿼리를 작성하였습니다.

그리고 실행을 하면

결과는 다음과 같이 나오게됩니다.



1개 행이 적용되었다고 나오네요.

그러면 이제 다시 

test_member_tmp 테이블을

조회해보도록 하겠습니다.


select * from test_member_tmp


위처럼 조회를 하게 되면

결과는 다음과 같이 나오게 됩니다.



위처럼 나와지는 것을 확인할 수 있습니다.

SELECT INTO 에서 넣은 aaa와

방금 전 INSERT INTO SELECT를 통해

넣은 데이터

총 2개가 조회가 되는 것을

확인할 수 있습니다.





3. SELECT INTO를 이용한 테이블 구조만 복사

이번에는 SELECT INTO를 이용하여

테이블 구조만 복사하는 방법을

정리해보도록 하겠습니다.


위 1번에서는 테이블구조 및 데이터를 복사하는 것으로

테이블 복사라고 할 수 있습니다.

하지만 이것은 데이터는 중복되지 않지만

테이블 구조는 동일하다면

테이블 구조만을 SELECT INTO를 이용하여

복사할 수 있습니다.



우선, 테이블 구조만 복사하기 위하여

test_member_tmp 테이블을

drop하여 삭제하였습니다.


drop table test_member_tmp


위와 같이 쿼리를 작성하여

실행을 하였습니다.

그랬더니 결과는 아래처럼 나왔습니다.



명령이 완료되었다고만 나오네요.

그러면 다시 test_member_tmp 테이블을

조회해보도록 하겠습니다.


select * from test_member_tmp


위처럼 조회를 해보았습니다.

그랬더니 아래처럼 나와지게 되었습니다.



위처럼 테이블이 삭제가 된 것을

확인할 수 있습니다.


그러면 이제는

테이블 구조만 복사해보도록 하겠습니다.

위 1번에서의 SELECT INTO와 사용방법은 동일합니다.

다만, WHERE절에 조건에서

절대 참이 나올 수 없게끔 하는 것입니다.


실제 사용 예제를 확인해보도록 하겠습니다.


select * into test_member_tmp
from test_member
where 1 = 2


위처럼 쿼리를 작성하였습니다.

WHERE절에서 1 = 2 이기 때문에

데이터는 절대 나올 수가 없습니다.


위와 같이 사용을 하는 것입니다.

위 쿼리를 실행하면

결과는 아래처럼 나오게 됩니다.



0개 행이 영향을 받았다고 나오네요.

즉, 데이터는 아무것도 안들어가졌다는 거네요.


그래도 혹시 모르니

다시 test_member_tmp 테이블을

조회해보도록 하겠습니다.


select * from test_member_tmp


위와 같이 조회를 하였습니다.

그랬더니 결과는

아래와 같이 나왔습니다.



데이터는 하나도 없는

빈 테이블이 나와지는 것을

확인할 수 있습니다.





오늘은 SQL SERVER에서의

SELECT INTO,

INSERT INTO SELECT에 대해서

정리를 해보았습니다.


SELECT INTO를 통해

테이블을 복사 혹은

테이블 구조만 복사할 수 있었습니다.


그리고 INSERT INTO SELECT를 통해

SELECT한 결과를

바로 INSERT 하는 방법도

정리를 해보았습니다.


이것은 많이 사용되는 것이니

알고 계시면 좋을 것 같네요.




이상으로 MSSQL에서의

SELECT INTO,

INSERT INTO SELECT 에 대한

정리였습니다~




엑셀과 MS SQL을 활용한 빅데이터 처리와 통계분석, 컴원미디어

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


728x90
반응형
LIST