数据类型
SQL 数据类型是一种属性,它指定了任何 SQL 对象中数据的类型。在 SQL 中,任意一个列、变量或者表达式都有其数据类型。
创建表的时候,你会用到这些数据类型。你应该根据需要为表中的每一个列选择合适的数据类型。
SQL Server 提供了六种数据类型供你使用:
精确数值数据类型
| 数据类型 | 下限 | 上限 |
| bigint | -9,223,372,036,854,770,000 | 9,223,372,036,854,770,000 |
| int | -2,147,483,648 | 2,147,483,647 |
| smallint | -32,768 | 32,767 |
| tinyint | 0 | 255 |
| bit | 0 | 1 |
| decimal | 1E+38 | 10^38 -1 |
| numeric | 1E+38 | 10^38 -1 |
| money | -922,337,203,685,477.00 | 922,337,203,685,477.00 |
| smallmoney | -214,748.36 | 214,748.36 |
近似数值数据类型
| 数据类型 | 下限 | 上限 |
| float | -1.79E + 308 | 1.79E + 308 |
| real | -3.40E + 38 | 3.40E + 38 |
日期和时间数据类型
| 数据类型 | 下限 | 上限 |
| datetime | Jan 1, 1753 | 31-Dec-99 |
| smalldatetime | 1-Jan-00 | 6-Jun-79 |
| date | 存储一个日期数据,例如 June 30, 1991 | |
| time | 存储一个时间数据,例如 12:30 P.M. |
注意:datetime 的时间和精度为 3.33 ms,而 smalldatetime 的时间精度为 1 min。
字符串数据类型
| 数据类型 | 下限 | 上限 |
| char | char | 最大长度为 8,000 字符。(定长非 Unicode 字符) |
| varchar | varchar | 最大长度为 8,000 字符。(变长非 Unicode 数据) |
| varchar(max) | varchar(max) | 最大长度为 231 字符, 变长非 Unicode 数据 (仅限 SQL Server 2005). |
| text | text | 变长非 Unicode 字符数据,最大长度 2,147,483,647 字符。 |
Unicode 字符串数据类型
| 数据类型 | 描述 |
| nchar | 最大长度 4000 字符。(定长 Unicode 字符串) |
| nvarchar | 最大长度 4000 字符。(变长 Unicode 字符串) |
| nvarchar(max) | 最大长度 231 字符 。(仅限 SQL Server 2005)。(变长 Unicode 字符串) |
| ntext | 最大长度 1,073,741,823 字符。(变长 Unicode 字符串) |
二进制数据类型
| 数据类型 | 描述 |
| binary | 最大长度 8000 字节。(定长二进制数据) |
| varbinary | 最大长度 8000 字节。(变长二进制数据) |
| varbinary(max) | 最大长度 231字节 (仅限 SQLServer 2005)。 (变长二进制数据) |
| image | 最大长度 2,147,483,647 字节。(变长二进制数据) |
其他数据类型
| 数据类型 | 描述 |
| sql_variant | 存储多种 SQL 支持的数据类型,text、ntext、timestamp 除外。 |
| timestamp | 一个数据库级的唯一值,每当有行更新此数据就会更新。 |
| uniqueidentifier | 全局唯一标识符(GUID) |
| xml | 存储 XML 数据。你可以在列或者变量中存储 XML 实例。(仅限 SQL Server 2005) |
| cursor | 指向 cursor 对象。 |
| table | 存储结果,以备后用。 |