SQL 数据类型

199 阅读6分钟

1. Character 字符串

数据类型描述
char(n)固定长度的字符串,最多 8,000 个字符
varchar(n)可变长度的字符串,最多 8,000 个字符
varchar(max)可变长度的字符串,最多 1,073,741,824 个字符
text可变长度的字符串,最多 2G 字符数据

2. Unicode 字符串

数据类型描述
nchar(n)固定长度的 Unicode数据,最多 4,000 个字符
nvarchar(n)可变长度的 Unicode数据,最多 4,000 个字符
nvarchar(max)可变长度 Unicode数据,最多 536,870,912 个字符
ntext可变长度的字符串,最多 2G 字符数据

3. Binary 类型

数据类型描述
bit允许 01NULL
binary(n)固定长度的二进制数据,最多 8,000 字节
varbinary(n)可变长度的二进制数据,最多 8,000 字节
varbinary(max)可变长度的二进制数据,最多 2G 字节
image可变长度的二进制数据,最多 2G

4. Number 类型

数据类型描述存储
tinyint允许从 0255 的所有数字1 字节
smallint允许从 -32,76832,767 的所有数字2 字节
int允许从 -2,147,483,6482,147,483,647 的所有数字4 字节
bigint允许介于 -9,223,372,036,854,775,8089,223,372,036,854,775,807 之间的所有数字。8 字节
decimal(p,s)固定精度和比例的数字。允许从 -10^38 +110^38 -1 之间的数字。p 参数指可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是18。s 参数指小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。5-17 字节
numeric(p,s)固定精度和比例的数字。允许从 -10^38 +110^38 -1 之间的数字。p 参数指可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是18。s 参数指小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。5-17 字节
smallmoney介于 -214,748.3648214,748.3647 之间的货币数据。4 字节
money介于 -922,337,203,685,477.5808922,337,203,685,477.5807(对于 Informatica,为 -922,337,203,685,477.58922,337,203,685,477.58Informatica 仅支持两位小数,而不是四位。)8 字节
float(n)-1.79E + 3081.79E + 308 的浮动精度数字数据。参数 n 指该字段保存 4 字节还是 8 字节。float(24)保存 4 字节,而float(53)保存 8 字节。n 的默认值是 53。4 或 8 字节
real-3.40E + 383.40E + 38 的浮动精度数字数据。4 字节

5. Date 类型

数据类型描述存储
datetime1753 年 1 月 1 日9999 年 12 月 31 日,精度为 3.33 毫秒8 bytes
datetime21753 年 1 月 1 日9999 年 12 月 31 日,精度为 100 纳秒6-8 bytes
smalldatetime1900 年 1 月 1 日2079 年 6 月 6 日,精度为 1 分钟4 bytes
date仅存储日期。从 0001 年 1 月 1 日9999 年 12 月 31 日3 bytes
time仅存储时间。精度为 100 纳秒。3-5 bytes
datetimeoffset与 datetime2相同,外加时区偏移。8-10 bytes
timestamp存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp基于内部时钟,不对应真实时间。每个表只能有一个timestamp变量。

6. 其他 数据类型

数据类型描述
sql_variant存储最多 8,000 字节不同数据类型的数据,除了 textntext 以及timestamp
uniqueidentifier存储全局标识符(GUID)。
xml存储 XML格式化数据,最多 2GB
cursor存储对用于数据库操作的指针的引用。
table存储结果集,供稍后处理。
  • 1. C# 中的 类型 对应的Sql类型?

C# 类型SQL 类型
Stringchar, varchar, nvarchar, text, nchar, ntext ……
Boolbit
DateTimedatetime
Intint
bytetinyint
Shortsmallint
Longbigint
Doublemoney, smallmoney
Floatfloat, real
Decimaldecimal, numberic
Guiduniqueidentifier
  • 2. Binary 类型可以存储的类型有哪些?

    音频,视频,文件(图片)

  • 3. 常用的数据库类型有哪些?

    int, tinyint, bit, bigint, varchar(50), nvarchar(50), datetime, text, decimal(18,4), uniqueidentifier

  • 4. Char 与 varchar 对比

CHAR的长度是不可变的,而VARCHAR的长度是可变的,也就是说,定义一个CHAR(10)和VARCHAR(10),如果存进去的是“ABCD”,那么CHAR所占的长度依然为10,除了字符“ABCD”外,后面跟六个空格,而VARCHAR的长度变为4了,取数据的时候,CHAR类型的要用Trim()去掉多余的空格,而VARCHAR类型不需要。

CHAR的存取速度要比VARCHAR快得多,因为长度固定,方便程序的存储与查找;但是CHAR为此付出的是空间代价,因为其长度固定,所以难免会有多余的空格占位符占位空间,可以说是以空间换取时间效率,而VARCHAR则是以空间效率为首位的。

CHAR的存储方式是,一个英文字符(ASCⅡ)占用1个字节,一个汉字占用2个字节;而VARCHAR的存储方式是,一个应为字符占用2个字节,一个汉字也占用2个字节。

两者的存储数据都是非UniCode的字符数据。

  • 5. sql 中的Character和Unicode 区别(char,nchar,varchar,nvarchar)

char(n)类型

将int ASCⅡ代码转换为字符的字符串函数。参数n是介于0和255之间的整数。如果整数表达式不在此范围内,将返回NULL值。

nchar(n)类型

包含n个字符的固定长度 Unicode 字符数据。n的值必须介于 1 与 4,000 之间。存储大小为n字节的两倍。 nchar 在 SQL-92 中的同义词为 national char 和 national character。

nvarchar(n)类型

包含n个字符的可变长度 Unicode 字符数据。n的值必须介于 1 与 4,000 之间。存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。

nchar 和 nvarchar

nchar 是固定长度Unicode数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用UNICODE UCS-2 字符集。