SQL Server—的数据类型
在 SQL Server 数据库中,数据类型是定义数据模型的基础,它们决定了数据在数据库中的存储方式和格式。正确选择数据类型不仅可以优化存储空间,还能提高查询性能和数据完整性。
1文本类型
文本类型:字符数据包含任意字母、符号或数字字符的组合
- char:固定长度的非 Unicode 字符数据,最大长度为8000个字符,一个汉字占2个字符
- varchar:可变长度的非 Unicode 数据,最大长度为8000个字符
- text:存储长文本信息,最大长度为2^31-1 (2147483647)个字符。如果定义的字符超过 char的8000个字符,那么就需要定义为 text 长文本类型的了。
- nchar:固定长度的 Unicode 数据,最大长度为4000个字符
- nvarchar:可变长度的 Unicode 数据,最大长度为4000个字符
- ntext:存储可变长度的长文本,2^30-1 (1073741823)个字符
- Unicode:是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案
注意:带n的数据类型长度是不带n的两倍。比如nchar(1)和char(2)长度相同(1个字节 nchar 等于 声明2个字节的char,所以带 n 的最大长度就降低了)
2整数类型
- bigint:占用8个字节,可表示范围:-2^63 ~ 2^63-1之间的整数
- int:占用4个字节,可表示范围:-2^31 ~ 2^31-1之间的整数
- smallint:占用2个字节,可表示范围:-2^15 ~ 2^15-1之间的整数
- tinyint:占用1个字节,可表示范围:0 ~ 255之间的整数
3精确数字类型:
- decimal:-10^38 ~ 10^38-1之间的固定精度和小数位的数字
- numeric:功能等同于decimal
写法:decimal(整数,小数)和numeric(整数,小数)
默认:如果不指定位数,默认18位整数,0位小数,比如身份证号:numeric(18,0),当然身份证号一般不用 numeric,而是用 char,因为身份证号有的还含有 X 字符
4近似数字(浮点)类型:
- float[(n)]:表示范围:-1.79E+308 ~ 1.79E+308 (1.79乘以10的308次幂) n表示精度,在1-53之间取值,当n在1-24之间时,精度为7位有效数字,占用4个字节;当n在25-53之间时,精度为15位有效数字,占用8个字节
- real:表示范围: -3.40E+38 ~ 3.40E+38占用4个字节存储空间,相当于float(24)
5日期类型:
- datetime:允许的范围1753-1-1至9999-1-1
- smalldatetime:允许的范围1900-1-1至2079-6-6
时间精度不同:datetime精确到3/100秒;smalldatetime精确到1分钟
格式说明:
- 分隔符数字方式:2023-04-24或04/24/2023
- 纯数字方式:04242023
- 英文数字方式:Apr 24,2023
注意问题:日期在使用的时候需要使用单引号''括起来
6货币类型:
- money:货币数值介于 -2^63 ~ 2^63-1之间,精确到货币单位的千分之一。
- smallmoney:货币数据介于 -214748.3648 ~ -214748.3648之间,精确到货币单位的千分之十。
7位类型:
- bit:表示“是/否”类型的数据。(0、1 / true、false)
8二进制类型:
- binary:固定长度的二进制数据,最大长度为8000个字节。
- vbinary:可变长度的二进制数据,其最大长度为8000个字节。image:可变长度的二进制数据,其最大长度为2^31个字节。应用场合:可存储图