SqlServer2012学习 - 基本数据类型认知

精确数字:

1、整数

int是Sql Server主要整数类型。tinyint,smallint,int 不会自动转成bigint。

大于 2,147,483,647 的整数常量将转换为 decimal 数据类型,而不是 bigint 数据类型。

2、bit

可以取值为1、0或NULL的integer数据类型。

字符串值 TRUE 和 FALSE 可转换为 bit 值:TRUE 将转换为 1,FALSE 将转换为 0。

转换为 bit 会将任何非零值升为 1。

3、decimal[(p[,s])]和 numeric[(p[,s])]

固定精度和小数位数。 使用最大精度时,有效值的范围为 - 10^38 +1 到 10^38 - 1。

 decimal 的 ISO 同义词为 dec 和 dec(p、s)。 numeric在功能上等价于 decimal。

decimal(5,5)和decimal(5,0)为不同数据类型。

常量 12.345 将被转换为精度为 5,小数位数为 3 的 numeric 值。

默认情况下,将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 会进行舍入。 但如果 SET ARITHABORT 选项为 ON,则发生溢出时,SQL Server 会产生错误。 若仅降低精度和小数位数,则不会产生错误。

4、货币(值)数据类型

 money 和 smallmoney 数据类型精确到它们所代表的货币单位的万分之一。

近似数字:

5、float和real

用于表示浮点数值数据的大致数值数据类型。 浮点数据为近似值。real 的 ISO 同义词为 float(24)

SQL Server 将 n 视为下列两个可能值之一。 如果 1<=n<=24,则将 n 视为 24 如果 25<=n<=53,则将 n 视为 53

 日期和时间

6、date \datetime\datetime2\datetimeoffset\smalldatetime\time

对于新的工作,请使用 time、date、datetime2 和 datetimeoffset 数据类型。 这些类型符合 SQL 标准。 它们更易于移植。

 time、datetime2 和 datetimeoffset 提供更高精度的秒数。 datetimeoffset 为全局部署的应用程序提供时区支持。

将一个字符串转换为各种日期类型结果如下:

SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset';

 

普通字符串

7、char[(n)]和varchar[(n|max)]

 n 用于定义字符串长度,并且它必须为 1 到 8,000 之间的值,

 如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。 如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30

  • 如果列数据项的大小一致,则使用 char。

  • 如果列数据项的大小差异相当大,则使用 varchar。

  • 如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。

8、ntext\text和image

在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。 

请避免在新开发工作中使用这些数据类型,并考虑修改当前已使用这些数据类型的应用程序。 请改用 nvarchar(max)varchar(max) 和 varbinary(max)

Unicode 字符串

9、nchar[(n)]和nvarchar[(n|max)]

nchar [ ( n ) ]

固定长度的 Unicode 字符串数据。 n 用于定义字符串长度,并且它必须为 1 到 4,000 之间的值。 存储大小为 n 字节的两倍。 当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。 根据字符串的不同,n 个字节的存储大小可能小于为 n 指定的值。 nchar 的 ISO 同义词为national char 和 national character

nvarchar [ ( n | max ) ]

可变长度的 Unicode 字符串数据。 n 用于定义字符串长度,并且它可以为 1 到 4,000 之间的值。 max 指示最大存储大小是 2^31-1 个字节 (2 GB)。 存储大小(以字节为单位)是所输入数据实际长度的两倍 + 2 个字节。 nvarchar 的 ISO 同义词为 national char varying 和 national character varying。

如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。 如果没有使用 CAST 函数指定 n,则默认长度为 30。

如果列数据项的大小可能相同,请使用 nchar。

如果列数据项的大小可能差异很大,请使用 nvarchar。

二进制字符串

10、binary[(n)]和varbinary[(n|max)]

binary [ ( n ) ]

长度为 n 字节的固定长度二进制数据,其中 n 是从 1 到 8,000 的值。 存储大小为 n 字节。

varbinary [ ( n | max) ]

可变长度二进制数据。 n 的取值范围为 1 至 8,000。 max 指示最大存储大小是 2^31-1 个字节。 存储大小为所输入数据的实际长度 + 2 个字节。 所输入数据的长度可以是 0 字节。 varbinary 的 ANSI SQL 同义词为 binary varying

如果列数据项的大小一致,则使用 binary。

如果列数据项的大小差异相当大,则使用 varbinary。

当列数据条目超出 8,000 字节时,请使用 varbinary(max)。

其他数据类型

 

 

SQL Server 对数据类型使用以下优先级顺序:

  1. 用户定义数据类型(最高)

  2. sql_varian t

  3. xml

  4. datetimeoffset

  5. datetime2

  6. datetime

  7. smalldatetime

  8. date

  9. time

  10. float

  11. real

  12. decimal

  13. money

  14. smallmoney

  15. bigint

  16. int

  17. smallint

  18. tinyint

  19. bit

  20. ntext

  21. text

  22. image

  23. timestamp

  24. uniqueidentifier

  25. nvarchar(包括 nvarchar(max))

  26. nchar

  27. varchar(包括 varchar(max))

  28. char

  29. varbinary(包括 varbinary(max))

  30. binary(最低)

posted @ 2016-08-01 11:11  狂想NICE  阅读(1241)  评论(0编辑  收藏  举报