SQL Server数据库字段类型

 常用类型

分 类

数据类型

说 明

二进制数据类型

存储非字符和文本的数据

image

可用来存储图像

文本数据类型

字符数据包括任意字母、符号或数字字符的组合

char

固定长度的非 Unicode 字符数据

varchar

可变长度非 Unicode 数据

nchar

固定长度的 Unicode 

nvarchar

可变长度 Unicode 数据

text

存储长文本信息

ntext

存储可变长度的长文本

日期和时间

日期和时间

datetime

数字数据

该数据仅包含数字,包括整数和浮点数

int、smallint

整数

float、real

浮点数

货币数据类型

 十进制货币值 money
 

bit数据类型

 表示是/否的数据 bit 存储布尔数据类型

官方链接: 数据类型 (Transact-SQL) - SQL Server | Microsoft Docs

数字类型

INT、BIGINT、SMALLINT 和 TINYINT (TRANSACT-SQL)
数据类型范围存储
bigint-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节
int-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)4 个字节
smallint-2^15 (-32,768) 到 2^15-1 (32,767)2 字节
tinyint0 到 2551 字节
decimal  [ (p[ ,s] )]- 10^38 +1 到 10^38 - 1 (numeric 在功能上完全等同于 decimal )
numeric  [ (p[ ,s] )]- 10^38 +1 到 10^38 - 1 (numeric 在功能上完全等同于 decimal )
float  [ (n) ] 

n 的默认值为 53

-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308

取决于 n 的值
real-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 384 个字节
money-922,337,203,685,477.5808 到 922,337,203,685,477.5807(对于 Informatica,为 -922,337,203,685,477.58
到 922,337,203,685,477.58。 Informatica 仅支持两位小数,而不是四位。)
8 个字节
smallmoney-214,748.3648 到 214,748.36474 个字节

转换 decimal 和 numeric 数据

对于 decimal 和 numeric 数据类型,SQL Server 会将精度和确定位数的每个组合视为不同的数据类型。 例如,将 decimal(5,5) 和 decimal(5,0) 视为不同的数据类型 。

在 Transact-SQL 语句中,带有小数点的常量将自动转换为 numeric 数据值,而且使用必需的最小精度和小数位数 。 例如,常量 12.345 将被转换为精度为 5,小数位数为 3 的 numeric 值 。

从 decimal 或 numeric 转换为 float 或 real 可能会导致精度的一些丢失 。 从 int、smallint、tinyint、float、real、money 或 smallmoney 转换为 decimal 或 numeric 可能导致溢出 。

默认情况下,将数字转换为精度和小数位数较低的 decimal 或 numeric 值时,SQL Server 会进行舍入 。 反过来说,如果 SET ARITHABORT 选项为 ON,SQL Server 在发生溢出时抛出错误。 如果仅降低精度和确定位数,不足以抛出错误。

在进行 SQL Server 2016 (13.x) 之前,浮点值到 decimal 或 numeric 的转换仅限于精度为 17 位数字的值 。 小于 5E-18 的任何浮点 值(使用 5E-18 的科学计数法或 0.0000000000000000050000000000000005 十进制表示法设置时)都舍入为 0。 从 SQL Server 2016 (13.x) 起,不再具有该限制。


延伸阅读

以下转载 :SQL Server数据库字段类型说明 - melao2006 - 博客园

SQL Server数据库字段类型说明

目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型、二进制码字符串数据类型、Unincode字符串数据、整数类型、精确数据类型、近似值浮点数值数据类型、日期时间数据类型、货币数据类型、特殊数据类型。当然Sql Server还提供用户自定义的数据类型,但在我这篇不做讨论。

字符串类型

Char

char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符.

Varchar

varchar数据类型长度不超过 8KB也就是说不超过8000个字节,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度。

注意:其中文字符是占两个字节的。

Text

用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符

Varchar(MAX)

在Microsoft SQLServer2005及以上的版本中出现使用的,最多2^30-1个字节的数据。微软的说法是用这个数据类型来代替之前的text数据类型,有了大值数据类型之后,在对大值数据操作的时候要比以前灵活的多了。比如:之前text是不能用‘like’的,有了varchar(max)之后就没有这些问题了,因为varchar(max)在行为上和varchar(n)上相同,所以,可以用在varchar的都可以用在varchar(max)上。

二进制码字符串类型

Binary

用来存储可达8000 字节长的定长的二进制数据。binary既可以是固定长度的,也可以是变长度的。Binary[(n)] 是n位固定的二进制数据。其中 n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。

Varbinary

用来存储可达8000 字节长的变长的二进制数据。输入表字段的内容大小是可变的。

Image

数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节。存储的数据是以位字符串存储的,不是由SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在Image 数据类型中。

Varbinary(MAX)

在Microsoft SQLServer2005及以上的版本中出现使用的,与varchar(MAX)类似,是用来替代image大数据类型的。同理也可以通过where条件like检索的。

Unincode字符串类型

Nchar

用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。

Nvarhcar

用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍。

Ntext

用来存储大量的统一编码字符型数据。这种数据类型能存储230 -1或将近10亿个字符,且使用的字节空间增加了一倍。

Nvarchar(MAX)

在Microsoft SQLServer2005及以上的版本中出现使用的,与Varchar(MAX)类似,是用来替代ntext大数据类型的。同理也可以通过where条件like检索的。

说明:在 Microsoft SQL Server 中,传统的非Unicode 数据类型允许使用由特定字符集定义的字符。在SQL Server安装过程中,允许选择一种字符集。使用Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。 

整数类型

Bit

bit数据类型是整型,很省空间的一种数据类型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off。

Tinyint

是相对也是比较安全的,不接受恶意脚本内容的嵌入。数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。这种数据类型在数据库中占用1 个字节。

Smallint

smallint数据类型也是相对也是比较安全的,不接受恶意脚本内容的嵌入的。它可以存储从- 2的15次幂(-32768)到2的15次幂(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间。

Int

可以存储从- 2的31次幂(-2147483648)到2的31次幂 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节。

Bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为8 个字节。

精确数据类型

Decimal

decimal 数据类型能用来存储从-10的38次幂-1到10的38次幂-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数。

Numberic

表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化,与Decimal差不多,唯一的区别就是当数据值一定要按照指定精确存储时,可以用带有小数的 decimal 数据类型来存储数字。

近似值浮点数值数据类型

Float

它是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间可变精度的浮点数

Real

和Float类似,只是数值在-3.40E+38到3.40E+38之间可变精度的浮点数。

日期时间数据类型

Smalldatetime

它用来表示从1900年1月1日到2079年6月6日间的日期和时间,可精确到一分钟。

Datetime

它用来存储从1753年1月1日到9999年12月31日间所有的日期和时间数据,精确到三百分之一秒或3.33毫秒

说明:日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 Microsoft SQL Server中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。使用Smalldatetime 数据类型时,所存储的日期范围是 1900年 1 月 1日 开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。

日期的格式可以设定。设置日期格式的命令如下:

Set DateFormat {format | @format _var|

其中,format | @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。

例如,当执行 Set DateFormat YMD 之后,日期的格式为年月 日形式;当执行 Set DateFormat DMY 之后,日期的格式为日月有年 形式

示例说明

 表设计

列明数据类型
namenchar(10)
openDatedate
endTiemtime(0)
endTiem1time(1)
endTiem2time(2)
endTiem3time(3)
endTiem4time(4)
endTiem5time(5)
endTiem6time(6)
endTiem7time(7)
endTiem8time(8)

表显示结果

nameopenDate  endTiemendTiem1endTiem2endTiem3endTiem4endTiem5endTiem6endTiem7endTiem8
1         2020-12-1109:12:2409:12:23.800000009:12:23.830000009:12:23.827000009:12:23.827000009:12:23.827000009:12:23.827000009:12:23.8270000NULL
2         2020-12-1109:12:2509:12:24.700000009:12:24.670000009:12:24.670000009:12:24.670000009:12:24.670000009:12:24.670000009:12:24.6700000NULL
NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL

      

货币数据类型

Smallmoney

用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一。

Money

它表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一 

特殊数据类型

Timestamp

timestamp 数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”,但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的。

Uniqueidentifier

Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列。

Xml

xml 数据类型是在Microsoft SQLServer2005及以上的版本中出现使用的,可以将 XML 文档和片段存储在 SQL Server 数据库中。XML 片段是缺少单个顶级元素的 XML 实例。您可以创建 xml 类型的列和变量,并在其中存储XML实例。注意,存储的 xml 数据类型表示实例大小不能超过 2 GB。可以选择性地将 XML 架构集合与 xml 数据类型的列、参数或变量进行关联。集合中的架构用于验证和类型化 XML 实例。在这种情况下,XML 是类型化的。

sql_variant

sql_variant 数据类型使用方式与 Microsoft Visual Basic 中的 variant 数据类型相似。sql_variant 使单列、参数或变量存储不同数据类型的数据值。例如,一个 sql_variant 列可以容纳int、decimal、char、binary 和 nchar 值。每个sql_variant 列实例都记录数据值和元数据信息。其中包括基本数据类型、最大大小、小数位数、精度和排序规则。

sql_variant 对象可以容纳 SQL Server 所有数据类型(下列类型除外:text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max)、xml、timestamp 和 Microsoft .NET Framework 公共语言运行时[CLR] 用户定义类型)的数据。另外,sql_variant 数据实例还不能将 sql_variant 作为其基础的基本数据类型。所有类型的常量都可以在引用 sql_variant 列的谓词或赋值中指定。如果 sql_variant 值为NULL,则认为其没有基础的基本数据类型。即使Null 值来自具有特殊数据类型的变量或列,这项规则也适用。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值