[Study 2] 임시테이블 선언 및 사용 방법
SQL을 만들다 보면 중간의 쿼리 결과 값을 가지고 다시 가공을 하여 원하는 결과 값을 도출 하는 경우가 많이 있습니다. 이유는 단 한번의 쿼리를 이용하여 원하는 데이터를 가져 올 수 없는 경우도 있기 때문입니다.
물론 복잡하고 어렵게 단 한번의 쿼리(한방쿼리)로 원하는 데이터를 가져와서 뿌려 줄 수도 있겠지만 제 생각에 그런 방법은 이해하기도 힘들고 추후 쿼리에 대한 유지보수도 힘들 거라 생각 합니다.
이럴때 중간의 쿼리 결과를 임시테이블에 넣고 이 테이블을 사용하여 원하는 결과를 얻어 올 수 있습니다.
그럼 임시테이블을 생성 하고 사용 하는 방법에 대하서 알아보도록 하겠습니다.
임시테이블의 생성은 일반적인 테이블의 생성과 비슷합니다. 다만 다른점이 있다면 다음과 같이 테이블의 이름 앞에 '#'문자를 붙여 주는 것 입니다.
CREATE TABLE #IMSI_Employees
(
LastName nvarchar(20),
FirstName nvarchar(10)
)
위와 같이 생성된 임시테이블을 사용하는 방법은 아래와 같습니다.
INSERT INTO #IMSI_Employees
VALUES('Davolio', 'Nancy')
INSERT INTO #IMSI_Employees
VALUES('Fuller', 'Andrew')
INSERT INTO #IMSI_Employees
VALUES('Leverling', 'Janet')
INSERT INTO #IMSI_Employees
VALUES('Peacock', 'Margaret')
INSERT INTO #IMSI_Employees
VALUES('Buchanan', 'Steven')
INSERT INTO #IMSI_Employees
VALUES('Suyama', 'Michael')
INSERT INTO #IMSI_Employees
VALUES('King', 'Robert')
INSERT INTO #IMSI_Employees
VALUES('Callahan', 'Laura')
INSERT INTO #IMSI_Employees
VALUES('Dodsworth', 'Anne')
SELECT *
FROM #IMSI_Employees
-- 임시테이블 생성 후 Data Insert 2
CREATE TABLE #IMSI_Employees2
(
LastName nvarchar(20),
FirstName nvarchar(10)
)
INSERT INTO #IMSI_Employees2
SELECT LastName, FirstName
FROM Employees
SELECT *
FROM #IMSI_Employees2
-- 임시테이블 생성 및 Data Insert 3
SELECT LastName, FirstName
INTO #IMSI_Employees3
FROM Employees
SELECT *
FROM #IMSI_Employees3
마지막으로 임시테이블은 사용자가 연결이 끊겼을 때나, 사용 세션이 종료 되었을 때 자동으로 삭제가 됩니다. 만약 삭제가 되지 않은 경우에는 SQL Server에서 자동으로 생성된 임시 테이블을 삭제 합니다.
또한 생성된 임시테이블은 데이터베이스에 저장되지 않고 시스템 데이터베이스 tempdb에 저장 됩니다.
'Transact-SQL' 카테고리의 다른 글
| [Study 2] 임시테이블 선언 및 사용 방법 (0) | 2010/04/13 |
|---|---|
| [Study 1] 기본적인 자료형 및 DECLARE 사용 방법 (0) | 2010/04/13 |
