SQLShack (한국어)

이 기사에서는 구문을 포함한 SQL SELECT INTO 문을 다룹니다. 매개 변수 및 여러 테이블, 파일 그룹 및 WHERE 조건과 함께 사용

우리는 정기적으로 응용 프로그램에서 또는 SSMS에서 직접 SQL Server 테이블에 데이터를 삽입합니다. INSERT INTO 문을 사용하여 데이터를 삽입 할 수 있습니다. 이렇게하려면 Insert into the statement를 사용하여 테이블을 만들 수 없으므로 데이터를 삽입 할 테이블이 이미 있어야합니다.

INSERT INTO 문을 사용하여 다음 작업을 수행해야합니다.

p>

  • 적절한 데이터 유형으로 테이블 구조 만들기
  • 데이터 삽입

하지만 좋은 소식은 두 가지 작업을 모두 수행 할 수 있다는 것입니다. 함께 우아하게 SQL SELECT INTO 문을 사용합니다. Select 문에서 반환 된 열에 대한 테이블 구조를 만듭니다.

테이블의 많은 레코드를 업데이트한다고 가정 해보십시오. SELECT INTO 문을 사용하여 원본 테이블의 기존 구조로 백업 테이블을 만들 수 있습니다. 이 기사에서 SELECT INTO를 살펴 보겠습니다.

SELECT INTO 문 구문

1
2
3
4

SELECT column1, column2 .. .ColumnN
INTO New_table
FROM 테이블
;

SELECT INTO 문의 매개 변수

  • 열 목록 : 검색 할 열을 지정하고 새 테이블에 삽입해야합니다.
  • New_table : 여기에서 새 테이블 이름을 지정할 수 있습니다. SQL Server는 열 목록에 언급 된 열이있는 새 테이블을 만듭니다. 이것을 사용하여 기존 테이블을 바꿀 수 없습니다. 테이블 이름은 고유해야합니다.
  • 테이블 : 레코드를 가져 오려는 테이블이 포함되어 있습니다. 적절한 Join 절을 사용하여 여기에 여러 테이블을 정의 할 수 있습니다.
  • WHERE 조건 : Where 절을 사용하여 레코드를 필터링 할 수 있습니다. 선택적 절입니다.

예제를 사용하여 SQL SELECT INTO 문을 살펴 보겠습니다.

환경 :

이 예제에서는 다음을 사용합니다. 샘플 데이터베이스 AdventureWorks2017. 테이블에서 레코드를 선택하고 SELECT INTO 문을 사용하여 새 테이블을 생성한다고 가정합니다. 새 테이블에서만 선택한 열을 원합니다. 원하는 열이있는 Employee 테이블에서 select 문을 실행하겠습니다.

SQL SELECT INTO를 실행하기 전에 sp_help 명령을 사용하여 Employee_Demo 테이블이 AdventureWorks2017 데이터베이스에 존재하지 않음을 확인할 수 있습니다.

1

sp_help “..”

다음 스크린 샷에서 Employee_Demo 테이블이 내 데이터베이스에 존재하지 않음을 확인할 수 있습니다.

다음 쿼리를 실행하여 SELECT INTO 문을 사용하여 새 테이블을 만듭니다.

Azure Data Studio에서 다음과 같은 출력 메시지가 표시됩니다. 영향을받는 행 수가 10 개라는 것을 알 수 있습니다. 쿼리에서 Employee 테이블에서 상위 10 개 레코드를 선택했습니다.

새로 생성 된 Employee_Demo 테이블의 데이터에 액세스하여 이전 select 문과 동일한 레코드가 포함되어 있는지 확인할 수 있습니다.

SQL SELECT INTO 문에 열 속성을 지정하지 않았습니다. 소스 및 대상 테이블 열과 해당 속성을 비교해 보겠습니다.

Employee 및 Employee_Demo 테이블 모두에서 sp_help‘tablename’명령을 실행할 수 있습니다. Excel에서 두 테이블의 출력을 복사했습니다 (선택한 열에 대해). 다음 스크린 샷에서 열 데이터 유형과 해당 속성이 유사한 것을 볼 수 있습니다.

이전 SQL SELECT INTO 문에서 , 소스 테이블 (Employee)의 몇 열에서 대상 테이블 (Employee_Demo)을 준비했습니다.

다음 쿼리를 사용하여 Employee 테이블의 모든 열이있는 다른 테이블을 만들어 보겠습니다.

출력에서 Employee_All 테이블에 290 개의 행이 삽입 된 것을 볼 수 있습니다.

SELECT INTO 문은 열 목록에 지정된 열이있는 새 테이블을 만듭니다. 대상 테이블에서도 유사한 데이터 유형을 생성합니다.

소스 테이블에 기본 및 외래 키가 있다고 가정합니다. 소스 테이블과 유사하게 기본 키와 외래 키를 생성합니까? 아니요, SQL SELECT INTO 문은 대상 테이블에 키를 생성하지 않습니다. 원하는 경우 대상 테이블에 키를 정의 할 수 있습니다. 다음 섹션에서이를 확인하겠습니다.

이전 예에서 Employee 테이블에는 기본 및 외래 키가 정의되어 있습니다. INFORMATION_SCHEMA 뷰를 사용하여 기존 키 목록을 가져올 수 있습니다. 다음 코드를 실행하면 Employee 테이블에 기존 Primary 및 Foreign 키가 반환됩니다.

Employee 테이블에 기본 및 외래 키가 포함되어 있습니다.

Employee 테이블에서 Employee_All의 모든 열을 복사했습니다. 이제 대상 테이블에서 기본 및 외래 키를 확인해야합니다.

대상 테이블에 키가 포함되어 있지 않음을 알 수 있습니다. 대상 테이블에서 키를 유연하게 정의 할 수 있습니다.

SQL SELECT INTO – 여러 테이블에서 데이터 삽입

이전 예제에서는 테이블을 만들었습니다. 단일 테이블 Employee에서 SELECT INTO 문을 사용합니다. 또한 여러 테이블을 조인하고 SELECT INTO 문을 사용하여 데이터가있는 새 테이블을 만들 수도 있습니다. 이 섹션에서는 여러 테이블을 함께 조인하려고합니다. 다음 쿼리에서는 AdventureWorks2017에서 다음 테이블을 조인했습니다.

다음 쿼리를 실행합니다. 조인 조건과 언급 된 열을 기반으로 여러 테이블의 결과를 제공합니다.

쿼리를 실행하면 SQL SELECT INTO 문의 출력을 따릅니다.

위의 테이블을 사용하여 반환 된 데이터로 테이블을 만들고 싶습니다. SQL SELECT INTO 문을 실행 해 보겠습니다.

. 테이블에 데이터를 삽입하십시오. select 문으로이 테이블의 레코드를 확인할 수 있습니다.

여러 테이블을 함께 결합하고 출력을 생성 할 수 있음을 알 수 있습니다. SELECT INTO 문을 사용하는 테이블.

대상 테이블에 대한 데이터 유형을 정의 할 필요가 없습니다. 수동으로 테이블을 생성하려면 각 열의 데이터 유형을 확인하고 그에 따라 데이터 유형을 정의해야합니다. 데이터 유형이 일치하지 않으면 다음과 같은 오류 메시지가 표시 될 수 있습니다.

오류 1 : 데이터 유형 불일치로 인해

Msg 245, Level 16, State 1 , 라인 1
varchar 값 GG를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

오류 2 : Msg 8152, 레벨 16, 상태 30, 라인 2

문자열 또는 바이너리 데이터가 잘립니다.

SQL SELECT INTO 문을 사용하여 데이터를 삽입하는 동안 이러한 오류가 발생하지 않습니다. 그러나이 방법을 사용하여 기존 테이블에 데이터를 삽입 할 수는 없습니다.

SELECT INTO – 파일 그룹 지정

이전 섹션에서는 새 테이블을 생성하고 여기에 데이터를 삽입 할 수 있는지 살펴 보았습니다. 기존 테이블에서 SQL SELECT INTO 문을 사용합니다. 기본 파일 그룹에만 테이블을 만듭니다. SQL Server 2016까지 특정 파일 그룹을 지정할 수 없습니다. SQL Server 2017에서는 새 테이블을 만들어야하는 특정 파일 그룹을 지정할 수 있습니다. SQL Server는 특정 Verify 테이블 파일 그룹에 새 테이블을 만듭니다. SQL Server 2017 이상에서 파일 그룹을 지정하지 않으면 기본 파일 그룹에 테이블이 생성됩니다.

참고 : SQL Server 2016 및 이전 버전에서는 SQL SELECT INTO에서 파일 그룹을 지정할 수 없습니다.

AdventureWorks2017 데이터베이스에 새 파일 그룹을 추가하겠습니다. 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 파일 그룹으로 이동합니다.

이 파일 그룹 페이지에서 파일 그룹 추가를 클릭하고 파일 그룹의 이름을 지정합니다.

이제 파일을 클릭하면 기존 데이터베이스 파일 (데이터 및 로그 파일)이 나열됩니다.이 페이지에서 새 데이터 파일을 추가하고 드롭 다운 목록에서 FileGroup을 지정합니다. 방금 만든 파일 그룹이어야합니다.

INSERTFILE 파일 그룹에 SQL 테이블을 만들려고합니다. 이 파일 그룹을 기본 파일 그룹으로 설정하지 않았습니다.

다음 쿼리에서 ON 절을 사용하여 파일 그룹 이름을 지정한 것을 볼 수 있습니다. 파일 그룹에 차이가있는 일반 SQL SELECT INTO 문과 유사하게 작동합니다.

1
2
3

select * into person.person_temp
ON INSERTFILE –FILEGROUP NAME
from person.person

테이블이 생성되면 새로 생성 된 테이블에서 sp_help 명령을 실행합니다. 다음 스크린 샷에서 테이블이 INSERTFILE FileGroup에 있는지 확인할 수 있습니다. 이전에 만든 파일 그룹입니다.

테이블 속성에서도이를 확인할 수 있습니다. SSMS에서 테이블을 마우스 오른쪽 버튼으로 클릭합니다. 저장소 섹션에서 원하는 파일 그룹을 볼 수 있습니다.

Where 조건으로 INTO 선택

레코드가 거의없는 SQL SELECT INTO 문이있는 테이블을 생성한다고 가정합니다. select 문과 유사한 Where 절을 사용할 수 있습니다.다음 쿼리에서 성이 % Duf %와 같은 사람에 대한 person.person_WC 테이블을 생성하려고합니다.

1
2
3
4

선택 * into person.person_WC
ON INSERTFILE-테이블 파일 그룹
from person.person
여기서 성은 “% Duf %”

결론

이 기사에서는 SQL에 대해 살펴 보았습니다. SELECT INTO 문 및 사용 시나리오. 데이터 유형을 지정하지 않고 테이블의 사본을 작성하는 데 유용한 명령입니다.

  • 저자
  • 최근 게시물
MCSA 인증 인도 구르 가온의 Microsoft Certified Trainer와 13 년의 경험을 보유한 Rajendra는 성능 최적화, 모니터링, 고 가용성, 재해 복구 전략 및 구현에 중점을 둔 다양한 대기업에서 근무하고 있습니다. 그는 SQL Server, Azure, MySQL, Linux, Power BI, 성능 조정, AWS / Amazon RDS, Git 및 현재까지 1,000 만 명이 넘는 독자가 시청 한 관련 기술에 대한 수백 개의 권위있는 기사의 저자입니다.
그는 SQL Server Always On 가용성 그룹에 대한 50 부작 시리즈를 통해 단일 주제에 대한 가장 큰 무료 온라인 기사 모음 중 하나를 작성했습니다. SQL Server 커뮤니티에 대한 공헌을 바탕으로 2020 년과 2021 년 SQLShack에서 지속적으로 권위있는 “올해의 최우수 작가”등 다양한 상을 수상했습니다.
Raj는 항상 새로운 도전에 관심이 있으므로 컨설팅이 필요한 경우 그의 글에서 다루는 주제에 대한 도움은 [email protected]으로 연락 할 수 있습니다.
Rajendra Gupta의 모든 게시물보기

Rajendra Gupta의 최신 게시물 (전체보기)
  • AWS에 대한 마이너 및 메이저 버전 업그레이드 수행 RDS SQL Server-2021 년 1 월 29 일
  • AWS RDS PostgreSQL 인스턴스 배포-2021 년 1 월 27 일
  • AWS DMS를 사용하여 온 프레미스 SQL 데이터베이스를 AWS RDS SQL Server로 마이그레이션-1 월 25 일 , 2021

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다