T-SQL 数据类型

一、精确数字型
1、整数型
数据类型 存储长度 范围
bigint 8 字节 -9223372036854775808 到 9223372036854775807
int 4 字节 -2147483648 到 2147483648 7
smallint 2 字节 -32768 到 32767
tinyint 1 字节 0,1 或 NULL
2、带国定精度和小数位数的数据类型
数据类型 存储长度 范围
numeric 1-9位:5字节
10-19位:9字节
20-28位:13字节
29-38位:17字节
-(10^38+1) 到 (10^38-1)
decimal 1-9位:5字节
10-19位:9字节
20-28位:13字节
29-38位:17字节
-(10^38+1) 到 (10^38-1)
3、货币型
数据类型 存储长度 范围
money 8字节 -922337203685477.5808 到 922337203685477.5808
smallmoney 4字节 -214748.3647 到 214748.3647
二、近似数字型
数据类型 存储长度 范围
float 7位:4字节
15位:8字节
-922337203685477.5808 到 922337203685477.5808
real 4字节 -214748.3647 到 214748.3647
数据类型 存储长度 范围
money 8字节 -922337203685477.5808 到 922337203685477.5808
smallmoney 4字节 -214748.3647 到 214748.3647
三、日期时间类型
数据类型 存储长度 范围
datetime 8字节 1753-01-01到9999-12-31
smalldatetime 4字节 1900-01-01到2079-06-06
date   0001-01-01到9999-12-31
time   00:00:00.0000000 到 23.59.59.9999999
datetime2(7)   时间日期组合,最高可以设定到小数点后7位
datetimeoffset   时间日期组合,其中时间以24小时制显示并带有时区信息
  C# 类型的 DateTime 应对应数据库的 datetime2(7),但是 Code First 时属性应该加上 [Column(TypeName=”datetime2”)]特性,否则数据库生成的是 datetime 类型,而非datetime2 类型
四、字符串类型
数据类型 存储长度 范围
char 1-8000 字符 1个字符占一字节,定长字符串
varchar varchar(n):1-8000字符
varchar(max):1到2^31-1字符
varchar(n):1字符占1字节
varchar(max):实际输入长度加2字节
text 1到2^31-1字符 1字符一字节,存储多少字符占多少空间,最大可存储2GB
五、Unicode 字符串类型
数据类型 存储长度 范围
nchar 1-4000 字符 1个字符占2字节,定长字符串
nvarchar nvarchar(n):1-4000字符
nvarchar(max):1到2^31-1字符
nvarchar(n):1字符占2字节
varchar(max):实际输入长度的两倍加2字节
ntext 1到2^31-1字符 1字符2字节,存储多少字符占多少空间,最大2GB
六、二进制字符串
数据类型 存储长度 范围
binary 1-8000 字节 定长,长度不足系统自动补上 0x00
varbinary varbinary(n):1-8000字节
varbinary(max):1到(2^31-1)个字节
varbinary(n):可变长度,输入数据的实际长度
varbinary(max):输入的实际长度加2
image 1 到 (2^31-1) 个字节 可变长度,输入数据的实际长度
七、其他数据类型
  1. cursor:
  2. sql_variant:
  3. timestamp:
  4. uniqueidentifier:
  5. HierarchyId:用数据表表达式(CTE)用于表现树状层次,而HierarchyId类型的字段存储了记录在层次结构中的准确位置,使用GetAncestor和GetDescendant方法可以遍历树 
    xml
八、用户自定义数据类型
EXEC sp_addtype no,'INT','NOT NULL' -- 创建名为“编号”的用户定义非空类型
EXEC sp_addtype name,'varchar(10)','NULL'
GO
DECLARE @id no
DECLARE @name name
SELECT TOP 1 @id = id,@name = name 
    FROM employee ORDER BY id DESC
    PRINT @id 
    PRINT @name
DROP TYPE no -- 删除用户自定义类型 no
EXEC SP_DROPTYPE name  -- 删除用户自定义类型 name
GO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
九、用户自定义表类型
CREATE TYPE UserViewModel AS TABLE
(UserName NVARCHAR(30),Birthday DATETIME2)

猜你喜欢

转载自blog.csdn.net/oracle_zsq/article/details/80990481