Jimmy那些事儿

数据类型介绍

介绍各种数据类型(data_type);

字符数据类型

  • 长度固定:当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度
  • 从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点
  • 一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar
类型 特点 容量
char 长度固定,8000个英文,4000个汉字 1字节
varchar 长度可变,8000个英文,4000个汉字 1字节
nchar 长度固定 Unicode编码,存储4000个字符 2个字节 [不论是英文还是汉字]
nvarchar 长度可变 Unicode编码,存储4000个字符 2个字节 [不论是英文还是汉字]
text 长度可变 1字节
ntext 长度可变 Unicode编码 2字节

Unicode或非Unicode
​ 数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。

Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。

数值类型

数据类型 说明 大小
Bit 1或0 1位
Tinyint 0~255整数 1字节
Smallint -32,768~32,767 整数 2字节
Int -2,147,483,648~2,147,483,647 整数 4字节
Bigint -2$^{63}$ ~ 2$^{63}$-1 的整数 8字节
Decimal / Numeric -10$^{38}$ +1 的固定精度数值 根据长度而变化
Money -2$^{63}$ ~ 2$^{63}$-1 的数值,精确到万分之一 8字节
SmallMoney -2,147,483,648~2,147,483,647 的数值,精确到万分之一 4字节

近似数据类型

DATA TYPE FROM TO
Float -1.79E+308 ~1.79E+308 的浮点数值 4或8字节
Real 24位精度的浮点值 4字节
0(默认值) 最多包含 6 位。 根据需要使用科学记数法。
1 始终为 8 位值。 始终使用科学记数法。
2 始终为 16 位值。 始终使用科学记数法

浮点数:伴随着因为无法精确表示而进行的近似或舍入

在计算机科学中,浮点(英语:floating point,缩写为FP)是一种对于实数的近似值数值表现法,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数(计算机中通常是2)的整数次指数得到。以这种表示法表示的数值,称为浮点数。这种表示方法类似于基数为10的科学计数法。

浮点指的是带有小数的数值。

大部分计算机采用二进制(b=2)的表示方法。位(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度和双精度。

日期和时间数据

数据类型 说明 字符大小
Datetime 1553年1月1日开始至9999年;Jan 1, 1753,精度3毫秒 8字节
Smalldatetime 1900年至2079年6月6日;精度1分钟 Jun 6, 2079
Date 0001年至9999年; 3字符
Time(2) 时间值,精度可变 3-5字节
Datetime(2) 0001年至9999年,精度可变,从0.01秒到100纳秒 6-8字节
Datetimeoffset

二进制类型

杂项数据类型

DATA TYPE Description
sql_variant Stores values of various SQL Server-supported data types, except text, ntext, and timestamp.
timestamp Stores a database-wide unique number that gets updated every time a row gets updated
uniqueidentifier Stores a globally unique identifier (GUID)
xml Stores XML data. You can store xml instances in a column or a variable (SQL Server 2005 only).
cursor Reference to a cursor object
table Stores a result set for later processing