본문 바로가기
DataBase/MS-SQL

[MS-SQL] Create Table 생략하고 임시 테이블 생성 (Select Into)

by 너울림 2023. 1. 4.

Create Table 생략하고 임시 테이블 생성하기 (Select Into)

 

Create Table 생략하고 임시 테이블 생성 (Select Into)

 


포스팅 개요


예전에 임시 테이블의 기본사용법을 포스팅한 적이 있습니다. 당시 포스팅의 쿼리는 제가 현재까지도 사용하는 임시 테이블 작업의 기준입니다. 다만 현업에서는 상황에 따라 Create Table을 생략하고 Select Into로 단축하여 사용하는 경우가 비일비재합니다. 원래 Select Into 구문은 테이블을 복사하는 작업에서 많이 사용하지만 오늘 포스팅에서는 임시 테이블을 생성을 간략화하는 방식으로 예제를 작성해 보았습니다.

 

[MS-SQL] 임시 테이블을 생성하고 활용하자

임시 테이블 생성하고 활용하자 방법도 다양한데 실제로 너무 많이 사용하는 임시 테이블.... 상세 내용 실제 테이블이 아니라 임시로 사용할 테이블을 생성하고 사용 후 삭제하는 예제입니다

ullim.net


예제 쿼리

 

  • 먼저 이전 포스팅의 테스트용 테이블을 그대로 사용하겠습니다

2023.01.02 - [DataBase/MS-SQL] - [MSSQL] 중복 테이블 삭제 후에 다시 테이블 생성(CREATE)하기

데이터가 있는 예제 테이블
이전에 만든 예제 테이블 (링크 참고)

 

  • 예제(1) 데이터가 있는 테이블의 필요한 부분만 가져와 임시 테이블을 만드는 쿼리
-- 중복 임시 테이블 검사
IF OBJECT_ID('tempdb..#Test_Temp') IS NOT NULL DROP TABLE #Test_Temp

-- 구매품별 합계 내역을 임시 테이블로 생성
SELECT Stock, SUM(Qty) '합계' INTO #Test_Temp FROM Test_Table GROUP BY Stock

-- [합게]가 높은 순서로 임시 테이블 검색
SELECT * FROM #Test_Temp ORDER BY [합계] DESC

 

  • 예제(2) 데이터가 없이 Select Into로 임시 테이블을 생성하는 쿼리
  • 단, 이번 예제는 가능하다는 것을 보여줄 뿐이지 추천하지는 않습니다
  • 이런 식으로 생성하려면 반드시 컬럼의 별칭을 지정해주여야 합니다
-- 중복 임시 테이블 검사
IF OBJECT_ID('tempdb..#Test_Temp') IS NOT NULL DROP TABLE #Test_Temp

-- UNION ALL로 데이터를 합쳐서 임시 테이블로 등록
SELECT 1 AS [ID], '이렇게 등록하는' AS [TmpCol] INTO #Test_Temp
UNION ALL SELECT 2, '방법도 있지만'
UNION ALL SELECT 3, '그닥 추천하지는'
UNION ALL SELECT 4, '않습니다'
UNION ALL SELECT 5, '특수한 상황에서만'
UNION ALL SELECT 6, '사용하세요'

-- 생성한 임시 테이블 조회
SELECT * FROM #Test_Temp ORDER BY [ID] ASC

실행 결과

 

  • 예제(1)은 정말 다양하게 사용되면서 응용도 가능합니다
  • 주의하실 점은 생성 시 컬럼 크기 이상의 데이터를 추가 Insert 하시면 오류가 생깁니다

예제(1) 실제 실행 결과
예제(1) 실제 실행 결과
예제(2) 실제 실행 결과


참고 링크

 

https://learn.microsoft.com/ko-kr/sql/t-sql/queries/select-examples-transact-sql?view=sql-server-ver16 

 

SELECT 예제(Transact-SQL) - SQL Server

SELECT 예(Transact-SQL)

learn.microsoft.com

댓글