包含数据的对象都具有一个相关的数据类型,此数据类型定义对象所能包含的数据种类(字符、整数、二进制数等)。以下对象具有数据类型:
指定对象的数据类型定义了该对象的四个特性:
image、binary 和 varbinary 数据类型的长度以字节定义。任何数字数据类型的长度是指保存此数据类型所允许的数字个数所需要的字节数。string 和 Unicode 数据类型的长度以字符数定义。
精度是数字可以包含的数字个数。例如,smallint 对象最多能拥有 5 个数字,所以其精度为 5。
小数位数是能够存储在小数点右边的数字个数。例如,int 对象不能含有小数点,小数位数为 0。money 对象的小数点右边最多可以有 4 个数字,小数位数为 4。
如果一个对象被定义为 money 类型,它最多可以包含 19 个数字,其中 4 个数字可以在小数点的右边。这个对象用 8 个字节存储数据。因此 money 数据类型的精度是 19,小数位数是 4,长度是 8。
Transact-SQL 含有以下基本数据类型:
| bigint | Binary | bit | char | cursor |
| datetime | Decimal | float | image | int |
| money | Nchar | ntext | nvarchar | real |
| smalldatetime | Smallint | smallmoney | text | timestamp |
| tinyint | Varbinary | Varchar | uniqueidentifier |
存储在 Microsoft® SQL Server™ 中的所有数据必须与上述这些基本数据类型之一相兼容。cursor 数据类型是唯一的不能赋值给表的列的基本数据类型。它只能用于变量和存储过程的参数。
一些基本数据类型具有同义词(比如,rowversion 是 timestamp 的同义词,national character varying 是 nvarchar 的同义词)。有关同义词行为的更多信息,请参见数据类型同义词。
也可以创建用户定义的数据类型,比如:
-- Create a birthday datetype that allows nulls.
EXEC sp_addtype birthday, datetime, 'NULL'
GO
-- Create a table using the new data type.
CREATE TABLE employee
|
|
|
|
|
|
|
|
用户定义的数据类型总是根据基本数据类型进行定义的。它们提供了一种机制,可以将一个名称用于一个数据类型,这个名称更能清楚地说明该对象中保存的值的类型。这样程序员和数据库管理员就能更容易地理解以该数据类型定义的对象的意图。
SQL Server 实例包括一个名为 sysname 的用户定义数据类型。sysname 用于表列、变量和存储对象名的存储过程参数。sysname 的精确定义与标识符规则有关,因此在 SQL Server 的不同实例之间有所不同。sysname 在功能上与 nvarchar(128) 等效。SQL Server 6.5 版或更早版本仅支持更小的标识符;这样,在早期版本中 sysname 被定义为 varchar(30)。