Tabela (języka Transact-SQL)

Jest to specjalny typ danych używany do przechowywania, zestaw wyników dla przetwarzania w późniejszym czas.tableprzede wszystkim do tymczasowego przechowywania zestaw wierszy zwracanych jako zestaw wyników tabela-wycenione funkcja.

Ostrzeżenie

Deklarowanie zmiennych typu table, użyj DECLARE @ local_variable.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia


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 ) 
     } 

Argumenty

  • table_type_definition
    Jest tej samej podzbiór informacji, które jest używane do definiowania tabela w CREATE TABLE.tabeladeklaracja zawiera definicje kolumna , nazwy, typy danych i ograniczenia. Dozwolone typy Jedyne ograniczenie to klucz podstawowy, unikatowy klucz i wartość NULL.

    Aby uzyskać więcej informacji na temat składni, zobacz CREATE TABLE (Transact-SQL), CREATE FUNCTION (Transact-SQL), i DECLARE @local_variable (Transact-SQL).

  • collation_definition
    Jest sortowanie kolumna składa się z Microsoft systemu Windows, ustawienia regionalne i styl porównania, system Windows ustawienia regionalne i zapisie dwójkowym lub Microsoft SQL Server sortowanie.Jeśli collation_definition nie jest określony, kolumna dziedziczy sortowanie bieżącej bazy danych.Lub jeśli kolumna jest zdefiniowana jako wspólnego języka runtime (CLR) typ zdefiniowany przez użytkownika, kolumna dziedziczy sortowanie typ zdefiniowany przez użytkownika.

Uwagi

Typ może być deklarowana funkcji i zmiennych table.tableZmienne mogą używane w funkcji, procedur przechowywanych i instancje.

Ważna informacjaWażne:

Kwerendy, które modyfikują table zmienne nie generują równoległych kwerendy wykonanie planów.Wydajności mogą mieć wpływ w przypadku bardzo dużych table zmiennych, lub table zmiennych w złożonych kwerend są modyfikowane.W takich sytuacjach należy wziąć pod uwagę przy użyciu tabel tymczasowych w zamian.Aby uzyskać więcej informacji, zobacz CREATE TABLE (Transact-SQL).Kwerendy, które odczytać table zmiennych bez modyfikowania ich nadal można parallelized.

tablezmienne zapewnia następujące korzyści:

  • A table zmienną zachowuje się jak zmiennej lokalnej.Ma on dobrze zakres.Jest to funkcja, procedura składowanalub partia jest zadeklarowany w.

    W ramach jego zakres table zmiennej można używać tak jak zwykły tabela.To może być stosowana dowolnej tabela lub tabela wyrażenie jest używany w instrukcji SELECT, INSERT, UPDATE i DELETE.Jednakże table nie może być używane w następującej instrukcja:

    SELECT select_list INTO table_variable   
    

    tablezmienne są automatycznie czyszczone na końcu funkcja, procedura składowanalub partia one określone.

  • Sprawdź ograniczenia, wartości domyślne i kolumny obliczane w table typu deklaracja nie można wywołać funkcji zdefiniowanej przez użytkownika.

  • tableZmienne stosowane w procedurach przechowywanych powodować mniejszą liczbę ponownych kompilacji procedur przechowywanych niż przy użyciu tabel tymczasowych.

  • Transakcje obejmujące table zmiennych ostatni tylko na czas aktualizacji na table zmienną.W związku z tym table zmiennych wymagają mniej blokowania i rejestrowanie zasobów.

Indeksy nie tworzone jawnie na table zmiennych oraz statystyki nie są przechowywane w table zmiennych.W niektórych przypadkach wydajności może poprawić za pomocą tabel tymczasowych, które obsługują indeksy i statystyki.Aby uzyskać więcej informacji dotyczących tabel tymczasowych, zobacz CREATE TABLE (Transact-SQL).

table Zmienne można się odwoływać za nazwą w klauzula FROM partia, jak pokazano w poniższym przykładzie:

SELECT Employee_ID, Department_ID FROM @MyTableVar

Poza FROM klauzula table zmienne musi odwoływać się za pomocą alias, jak pokazano w następującym przykładzie:

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

Przypisanie operacji między table zmiennych nie jest obsługiwany.Ponadto ponieważ table zmienne mają ograniczony zakres i są nie jest częścią trwałej bazy danych, ich nie dotyczy transakcji wycofywanie zmian.