티스토리 툴바

블로그 이미지
열심히 배우고자 하는 개발자들의 팀 블로그 입니다. 나머지 동료들을 모집 합니다. (루피, 조로, 우솝은 있습니다.) JMSOFT

카테고리

분류 전체보기 (16)
ASP.NET (3)
C# (1)
Silverlight (0)
WPF (0)
WCF (0)
C/C++ (1)
MFC (0)
SQLServer2008 (2)
SQL (6)
Transact-SQL (2)
WindowsServer2008 (1)
Total763
Today5
Yesterday4

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에 저장 됩니다.

저작자 표시 비영리 변경 금지
Posted by JMSOFT

최근에 받은 트랙백

글 보관함