다음을 통해 공유


table(Transact-SQL)

나중에 처리하기 위해 결과 집합을 저장할 수 있는 특별한 데이터 형식입니다. table은 주로 테이블 반환 함수의 결과 집합으로 반환되는 행 집합을 임시로 저장하는 데 사용됩니다.

[!참고]

table 유형의 변수를 선언하려면 DECLARE @local_variable을 사용합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문


table_type_definition ::= 
    TABLE ( { column_definition | table_constraint } [ ,...n ] ) 

column_definition ::= 
        column_name scalar_data_type 
    [ COLLATE collation_definition ] 
    [ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ] 
    [ ROWGUIDCOL ] 
    [ column_constraint ] [ ...n ] 

column_constraint ::= 
    { [ NULL | NOT NULL ] 
    | [ PRIMARY KEY | UNIQUE ] 
    | CHECK ( logical_expression ) 
    } 

table_constraint ::= 
     { { PRIMARY KEY | UNIQUE } ( column_name [ ,...n ] )
     | CHECK ( logical_expression ) 
     } 

인수

  • table_type_definition
    CREATE TABLE에서 테이블을 정의하는 데 사용되는 정보의 같은 하위 집합입니다. 테이블 선언에는 열 정의, 이름, 데이터 형식 및 제약 조건 등이 포함되며 허용되는 제약 조건 유형은 PRIMARY KEY, UNIQUE KEY 및 NULL뿐입니다.

    구문에 대한 자세한 내용은 CREATE TABLE(Transact-SQL), CREATE FUNCTION(Transact-SQL)DECLARE @local\_variable(Transact-SQL)을 참조하십시오.

  • collation_definition
    Microsoft Windows 로캘 및 비교 스타일, Windows 로캘 및 이진 표기법 또는 MicrosoftSQL Server 데이터 정렬로 구성된 열의 데이터 정렬입니다. collation_definition을 지정하지 않으면 현재 데이터베이스의 데이터 정렬이 해당 열에 상속됩니다. 또는 CLR(공용 언어 런타임) 사용자 정의 형식으로 열을 정의할 경우 사용자 정의 형식의 데이터 정렬이 해당 열에 상속됩니다.

주의

함수 및 변수를 table 형식으로 선언할 수 있으며 table 변수는 함수, 저장 프로시저 및 일괄 처리에서 사용할 수 있습니다.

중요 정보중요

table 변수를 수정하는 쿼리는 병렬 쿼리 실행 계획을 생성하지 않습니다. 매우 큰 table 변수나 복잡한 쿼리의 table 변수를 수정하면 성능에 영향을 줄 수 있습니다. 이런 상황에서는 임시 테이블을 대신 사용해 보십시오. 자세한 내용은 CREATE TABLE(Transact-SQL)을 참조하십시오. 수정하지 않고 table 변수를 읽는 쿼리는 병렬 처리할 수 있습니다.

table 변수의 이점은 다음과 같습니다.

  • table 변수는 지역 변수처럼 작동하며 잘 정의된 범위를 가집니다. 범위는 변수가 선언된 함수, 저장 프로시저 또는 일괄 처리입니다.

    범위 내에서 일반 테이블처럼 table 변수를 사용할 수 있으며 SELECT, INSERT, UPDATE 및 DELETE 문에서 테이블 또는 테이블 식이 사용되는 어디에나 적용할 수 있습니다. 그러나 다음 문에서는 table을 사용할 수 없습니다.

    SELECT select_list INTO table_variable   
    

    table 변수는 자신이 정의된 함수, 저장 프로시저 및 일괄 처리가 끝나면 자동으로 정리됩니다.

  • table 형식 선언 내의 CHECK 제약 조건, DEFAULT 값 및 계산 열은 사용자 정의 함수를 호출할 수 없습니다.

  • 저장 프로시저에 table 변수를 사용하면 임시 테이블을 사용할 때보다 저장 프로시저를 다시 컴파일하는 횟수가 줄어듭니다.

  • table 변수와 관련된 트랜잭션은 table 변수가 업데이트되는 동안만 지속됩니다. 따라서 table 변수를 사용하면 리소스의 잠금과 로깅에 대한 요구가 줄어듭니다.

명시적으로 table 변수에 대한 인덱스를 만들 수 없으며 table 변수에 대한 통계는 유지되지 않습니다. 경우에 따라서는 인덱스와 통계를 지원하는 임시 테이블을 대신 사용하여 성능을 향상시킬 수도 있습니다. 임시 테이블에 대한 자세한 내용은 CREATE TABLE(Transact-SQL)을 참조하십시오.

다음 예에서와 같이 일괄 처리의 FROM 절에서 이름으로 table 변수를 참조할 수 있습니다.

SELECT Employee_ID, Department_ID FROM @MyTableVar

FROM 절 밖에서는 다음 예에서와 같이 별칭을 사용하여 table 변수를 참조해야 합니다.

SELECT EmployeeID, DepartmentID 
FROM @MyTableVar m
JOIN Employee on (m.EmployeeID =Employee.EmployeeID AND
   m.DepartmentID = Employee.DepartmentID)

table 변수 간의 할당 작업은 지원되지 않습니다. table 변수는 또한 제한된 범위를 가지며 영구 데이터베이스의 일부가 아니므로 트랜잭션 롤백의 영향을 받지 않습니다.