Синонимы типов данных (Transact-SQL)
Синонимы типов данных включены в SQL Server 2005 ради совместимости со спецификацией SQL-92. Эти синонимы и соответствующие им системные типы данных SQL Server приведены в следующей таблице.
Синоним | Системный тип данных SQL Server |
---|---|
Binary varying |
varbinary |
char varying |
varchar |
character |
char |
character |
char(1) |
character(n) |
char(n) |
character varying(n) |
varchar(n) |
Dec |
decimal |
Double precision |
float |
float[(n)]; n = 1-7 |
real |
float[(n)]; n = 8-15 |
float |
integer |
int |
national character(n) |
nchar(n) |
national char(n) |
nchar(n) |
national character varying(n) |
nvarchar(n) |
national char varying(n) |
nvarchar(n) |
national text |
ntext |
rowversion |
timestamp |
Синонимы типов данных можно использовать вместо соответствующих базовых типов данных в инструкциях языка определения данных (data definition language, DDL), таких как CREATE TABLE, CREATE PROCEDURE или DECLARE @variable. Однако после создания объекта синонимы утрачивают силу. При создании объекта ему назначается базовый тип данных, связанный с синонимом. Никаких признаков того, что в инструкции, создавшей объект, был указан синоним, не остается.
Всем объектам, производным от первоначального объекта, таким, как столбцы результирующего набора или выражения, назначается базовый тип данных. Все последующие вызовы функций работы с метаданными, выполняемые для первоначального объекта и любых производных от него объектов, сообщают базовый тип данных, а не синоним. Это имеет место при работе с метаданными, например в процедуре sp_help и других системных хранимых процедурах, представлениях информационных схем и различных API-операции над метаданными, сообщающих типы данных столбцов таблицы или результирующего набора.
Например, можно создать таблицу, указав тип national character varying
:
CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, VarCharCol national character varying(10))
На самом деле столбцу VarCharCol
при этом будет назначен тип данных nvarchar(10), и все последующие вызовы функций работы с метаданными будут сообщать, что этот столбец имеет тип nvarchar(10), но не national character varying(10).