数据类型(数据库引擎)

包含数据的对象都有一个相关联的数据类型,它定义对象所能包含的数据种类,例如字符、整数或二进制。下列对象具有数据类型:

  • 表和视图中的列。

  • 存储过程中的参数。

  • 变量。

  • 返回一个或多个特定数据类型数据值的 Transact-SQL 函数。

  • 具有返回代码(始终为 integer 数据类型)的存储过程。

为对象分配数据类型时可以为对象定义四个属性:

  • 对象包含的数据种类。

  • 所存储值的长度或大小。

  • 数值的精度(仅适用于数字数据类型)。

  • 数值的小数位数(仅适用于数字数据类型)。

有关数据类型精度、小数位数和长度的详细信息,请参阅精度、小数位数和长度 (Transact-SQL)

Transact-SQL 具有下列系统数据类型。

存储在 Microsoft SQL Server 中的所有数据都必须与上述这些基本数据类型之一兼容。cursor 数据类型是唯一不能分配给表列的系统数据类型。它只能用于变量和存储过程参数。

一些基本数据类型具有同义词(例如,rowversiontimestamp 的同义词,national character varying 是 nvarchar 的同义词)。有关同义词的行为的详细信息,请参阅数据类型同义词 (Transact-SQL)

还可以创建两种用户定义数据类型:

  • 可以从基本数据类型创建别名数据类型。它们提供了一种可以将更能清楚地说明对象中值的类型的名称应用于数据类型的机制。这使程序员或数据库管理员能够更容易地理解用该数据类型定义的对象的用途。例如:

    -- Create a birthday datetype that allows nulls.
    CREATE TYPE birthday
    FROM datetime NULL
    GO
    -- Create a table using the new data type.
    CREATE TABLE employee (emp_id char(5), emp_first_name char(30), emp_last_name char(40), emp_birthday birthday)
    

    有关详细信息,请参阅使用别名数据类型

  • CLR 用户定义数据类型基于在托管代码中创建的数据类型,并在 SQL Server 程序集中上载。有关详细信息,请参阅使用 CLR 用户定义类型