Udostępnij za pośrednictwem


Przy użyciu specjalnych typów danych

W tym temacie opisano typy danych specjalne, które są dostępne w SQL Server.Typy danych specjalne są te, które nie dopasowanie do żadnych innych kategorii typu danych.W SQL Server, typy danych specjalne: bit, hierarchyid, sql_variant, sysname, table, timestamp i typy danych alias.

bit

Bittyp danych jest typ danych numerycznych, który przechowuje 0 lub 1.Ciąg wartości PRAWDA i FAŁSZ, które mogą być konwertowane na bit wartości, jak pokazano w następującym przykładzie:

SELECT CONVERT (bit, 'true')
SELECT CONVERT(bit, 'false')

In this example, true is converted to 1 and false is converted to 0.bit data does not have to be enclosed in single quotation marks.

hierarchyid

Hierarchyid typ danych jest używany do zarządzania danymi hierarchicznymi i tabele, które mają strukturę hierarchiczną.Aby pracować z danymi hierarchicznymi w Transact-SQL Kod, użyj Funkcje hierarchyid.Aby uzyskać więcej informacji, zobacz Typy danych hierarchyid (aparat bazy danych).

sql_variant

Sql_variant typu danych umożliwia pojedyncza kolumna, parametr lub zmiennej do przechowywania danych wartości różnych typów danych.Każde wystąpienie sql_variant kolumna rekordy wartość i metadane, który opisuje wartości.Dostępne są następujące metadane:

  • Podstawowy typ danych

  • Maksymalny rozmiar

  • Skala

  • Precision

  • Sortowanie

Aby pobrać metadane dla określonego sql_variant wystąpienie, użyj SQL_VARIANT_PROPERTY funkcja.

W poniższym przykładzie druga tabela zawiera sql_variant kolumna:

CREATE TABLE ObjectTable (
   ObjectID int CONSTRAINT PKObjectTable PRIMARY KEY,
   ObjectName nvarchar(80),
   ObjectWeight decimal(10,3),
   ObjectColor nvarchar(20))
CREATE TABLE VariablePropertyTable (
   ObjectID int REFERENCES ObjectTable(ObjectID),
   PropertyName nvarchar(100),
   PropertyValue sql_variant,
   CONSTRAINT PKVariablePropertyTable
   PRIMARY KEY(ObjectID, PropertyName))

Sysname

sysname Jest używany typ danych dla kolumny tabela, zmiennych i procedura składowana parametry, które przechowują nazwy obiektu.Dokładną definicję sysname związane z reguły dla identyfikatorów.Therefore, it can vary between instances of SQL Server.sysname is functionally the same as nvarchar(128) except that, by default, sysname is NOT NULL.W starszych wersjach SQL Server, sysname jest zdefiniowany jako varchar(30).

Ważna informacjaWażne:

W bazach danych, jest rozróżniana lub mają Sortowanie binarne sysname jest rozpoznawana jako SQL Server Typ danych systemu tylko wtedy, gdy pojawia się na małe przypadek.

tabela

tabela typ danych funkcji, takich jak tabela tymczasowa.Jest używany do przechowywania zestaw wyników dla późniejszego przetworzenia.Ten typ danych tylko można zdefiniować zmienne lokalne typu table i wartości zwracanej przez funkcja zdefiniowaną przez użytkownika.

Definicja tabela wartość zmiennej lub zwrotu zawiera definicje kolumna Typ danych, precyzji i skali każdej kolumna i opcjonalne ograniczeń klucza podstawowego, unikatowe, NULL i wyboru.Nie można użyć tabela zdefiniowaną przez użytkownika jako typ danych.

Format wierszy, które są przechowywane w table zmienną lub które są zwracane przez funkcja zdefiniowaną przez użytkownika muszą być zdefiniowane zadeklarowana zmienna lub funkcja jest tworzony.Składnia oparta jest na składni CREATE TABLE, na przykład:

DECLARE @TableVar TABLE (Cola int PRIMARY KEY, Colb char(3))
INSERT INTO @TableVar VALUES (1, 'abc')
INSERT INTO @TableVar VALUES (2, 'def')
SELECT * FROM @TableVar
GO

table variables and user-defined functions that return a table can be used only in certain SELECT and INSERT statements, and where tables are supported in the UPDATE, DELETE, and DECLARE CURSOR statements.table variables and user-defined functions that return a table cannot be used in any other Transact-SQL statements.

Indeksy lub innych ograniczeń, które są stosowane do tabela musi być zdefiniowany jako część zmiennej DECLARE lub funkcji Tworzenie instrukcja.Nie mogą być one stosowane później ponieważ instrukcji CREATE INDEX lub ALTER TABLE nie tabela referencyjna zmiennych i funkcji zdefiniowanej przez użytkownika.

Aby uzyskać więcej informacji na temat składni, która jest używana do definiowania table zmiennych i funkcji zdefiniowanej przez użytkownika, zobacz DECLARE @local_variable (Transact-SQL) i CREATE FUNCTION (Transact-SQL).

Sygnatura czasowa

The timestamp data type has nothing to do with times or dates.timestamp values are binary numbers that indicate the relative sequence in which data modifications have occurred in a database.

Nigdy nie używaj timestamp kolumny kluczy, szczególnie klucze podstawowe, ponieważ timestamp wartość zmienia się co czas modyfikacji wierszy.

Aby zarejestrować czas, kiedy występować modyfikacji danych w tabela, użyj jednej datetime2 lub smalldatetime Typ danych do rejestrowania zdarzeń i wyzwalaczy automatycznie zaktualizować wartości w przypadku wystąpienia jakichkolwiek zmian.

Alias typów danych

Typy danych aliasu umożliwiają rozszerzenie SQL Server podstawowy typ danych, takich jak varchar opisową nazwę i format, który można dostosować do określonego wykorzystania.Na przykład, następująca instrukcja implementuje birthday Typ danych zdefiniowany przez użytkownika, który opiera się na datetime Typ danych i pozwala na wartości null (NULL):

EXEC sp_addtype birthday, datetime, 'NULL'

Wybierz typy podstawowe wykonywania typy danych zdefiniowane przez użytkownika, należy zachować ostrożność.Na przykład w Stanach Zjednoczonych, numerów PESEL mają format z nnn-nn-nnnn.Chociaż numery ubezpieczenia społecznego zawierają numery, numery identyfikator formularza i nie poddaje się operacje matematyczne.Dlatego jest powszechną praktyką, aby utworzyć typ danych zdefiniowany przez użytkownika numeru PESEL jako varchar i utworzyć ograniczenie typu CHECK, aby wymusić format numery ubezpieczenia społecznego, które są przechowywane w tabela, jak pokazano w poniższym przykładzie:

EXEC sp_addtype SSN, 'VARCHAR(11)', 'NOT NULL'
GO
CREATE TABLE ShowSSNUsage (EmployeeID int PRIMARY KEY, EmployeeSSN SSN, CONSTRAINT CheckSSN CHECK ( EmployeeSSN LIKE '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' )
)
GO

Jeśli SSN kolumny są zwykle używane jako kolumny klucz w indeksach, szczególnie indeksów klastrowanych, można zmniejszyć rozmiar klawiszy z 11 bajtów do 4 podczas SSN Typ danych zdefiniowany przez użytkownika jest implementowane za pomocą int podstawowy typ danych zamiast.To obniżenie rozmiar klucz zwiększa pobierania danych.Ulepszona wydajność pobierania danych i eliminacji potrzebę ograniczenia CHECK zwykle przeważą konwersji dodatkowe przetwarzanie z int znak formatowania, kiedy SSN są wartości wyświetlony lub zmodyfikowany.