본문 바로가기

DBMS/SQL Server

[SQL Server] SELECT INTO 구문 사용시 복사되지 않는 것

 

SELECT INTO 구문은 새 테이블을 만든 후 쿼리의 결과 행을 새로 만든 테이블에 삽입한다.

주로 테이블의 데이터를 수정, 삭제할 경우 백업의 용도로 사용한다.

테이블을 복사할 때 제약조건, NULL, IDENTITY 등도 같이 복사되는지 확인해보자.

 

 USE TEMPDB

 GO

 

 CREATE TABLE TEST_1 (

    IDX    INT     IDENTITY

  , NAME   CHAR(6) NOT NULL

  , AGE    TINYINT NOT NULL

  , GENDER TINYINT DEFAULT 1    -- 1:, 2:

  , CONSTRAINT PK_TEST PRIMARY KEY(IDX)

 )

 GO

 

 INSERT INTO TEST_1 VALUES ('박보영', 15, 2)

                         , ('유인나', 20, 2)

                         , ('신보라', 25, DEFAULT)

 GO

 

 SELECT * FROM TEST_1

 GO

 

 

 -- 제약조건, NULL, IDENTITY 확인

 SP_HELP TEST_1

 GO

 

 

 -- SELECT INTO 구문을 이용하여 테이블 복사

 SELECT * INTO TEST_COPY FROM TEST_1

 GO 

 SELECT * FROM TEST_COPY

 GO

 

 

 -- 제약조건, NULL, IDENTITY의 복사 여부 확인

 SP_HELP TEST_COPY

 GO

 

테이블의 데이터는 그대로 복사되었지만 PRIMARY KEY와 DEFAULT 제약조건은 복사되지 않았음을

확인할 수 잇다.

INSERT INTO 구문 사용시 NULL, IDENTITY를 제외한 다른 제약조건은 복사되지 않는다.