오늘은 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' 카테고리의 다른 글
MSSQL에서 테이블별 사이즈 및 건수 확인하기 (0) | 2020.07.29 |
---|---|
MSSQL에서 테이블명, 문자열 검색하기 (0) | 2020.07.17 |
MS-SQL에서 ORDER BY 절에 CASE WHEN 사용하기 (0) | 2020.06.15 |
MSSQL에서의 EXISTS와 IN의 사용 및 차이점 (0) | 2020.06.05 |
MSSQL에서 INDEX에 INCLUDE 되어있는 정보 확인하기 (0) | 2020.05.12 |