SQL Server SELECT INTO 명령어란?
SQL Server(Transact-SQL)에서 SELECT INTO 명령은 기존 테이블의 열을 복사하여 새로운 테이블을 생성하는 데 사용됩니다.
주의할 점은, 이 방식으로 테이블을 생성하면 새 테이블에 기존 테이블의 레코드까지 함께 복사된다는 것입니다. 복사되는 데이터의 범위는 SELECT 문에 따라 결정됩니다.
SELECT INTO 구문
SELECT 표현식
INTO 새_테이블명
FROM 테이블명
[WHERE 조건];
구문 요소 설명
표현식 (bieu_thuc)
조회하고자 하는 열(column) 또는 값입니다.
새_테이블명 (bang_moi)
선택한 표현식과 해당 정의를 바탕으로 새롭게 생성되는 테이블입니다. 이 테이블은 명령 실행 시점에 아직 존재하지 않아야 합니다.
테이블명 (bang)
레코드를 가져올 원본 테이블입니다. FROM 절에는 반드시 최소 하나 이상의 테이블이 지정되어야 합니다.
WHERE 조건 (dieu_kien)
선택 사항입니다. 조회 대상 레코드가 반드시 만족해야 하는 조건을 의미합니다.
참고 사항
SQL Server에서 SELECT INTO 명령을 실행할 때, 새 테이블은 반드시 실행 전에 존재하지 않아야 합니다. 동일한 이름의 테이블이 이미 존재한다면 SELECT INTO 명령은 실패하게 됩니다.
SELECT INTO 명령 예제
SELECT nhanvien_id, ho, ten
INTO danhba
FROM nhanvien
WHERE nhanvien_id < 1000;
이 예제에서 SELECT INTO 명령은 직원 테이블(nhanvien)에서 직원 ID(nhanvien_id), 성(ho), 이름(ten)을 조회한 뒤, 해당 필드와 그 정의를 새 테이블(danhba)에 복사합니다.
원본 테이블에 레코드가 존재하는 경우, 새 테이블에도 SELECT 문이 반환한 레코드들이 함께 저장됩니다.
별칭(ALIAS)으로 열 이름 변경하기
새 테이블에서 기존 열 이름을 그대로 사용하지 않고 다른 이름으로 변경하고 싶다면, SELECT INTO 명령에서 별칭(ALIAS)을 지정하면 됩니다.
SELECT nhanvien_id AS danhba_id, ho, ten
INTO danhba
FROM nhanvien
WHERE nhanvien_id < 1000;
위 예제에서는 새 테이블(danhba)의 첫 번째 열 이름을 nhanvien_id 대신 danhba_id로 변경하고자 합니다. 이를 위해 다음과 같이 nhanvien_id 열에 별칭을 지정했습니다.
nhanvien_id AS danhba_id
추가 팁
- SELECT INTO는 테이블 백업이나 임시 데이터 작업에 유용하게 활용됩니다.
- 단, 원본 테이블의 인덱스, 제약 조건(CONSTRAINT), 트리거는 새 테이블로 복사되지 않으므로 필요하다면 별도로 생성해야 합니다.