2.3.1 数据库——数据类型
文章目录
2.3数据表
2.3.1 数据类型
SQL Server 2005 中的数据类型:
2.3.1.1精确数字
类型:
- 整数:
数据类型 | 范围 | 存储 |
---|---|---|
int | -2^31 (-2,147,483,648)到 2^31-1(2,147,483,647) | 4字节 |
bigint | -2^63 (-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,807) | 8字节 |
smallint | -2^15 (-32,768)到 2^15-1(32,767) | 2字节 |
tinyint | 0到255 | 1字节 |
bit | 1,0(true,flase) | 如果表中由8个一下的bit列,则这些列共用1个字节存储; 如果有9到16个bit列,则这些列用2个字节存储,以此类推。 |
-
带固定精度和小数位数的数值:
decimal和numeric(二者等价)- 表示方法:decimal[(p[,s])] 和numeric[(p[,s])]
- p(precision,精度):最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。默认精度为18
- s(scale,小数位数):小数点右边可以存储的十进制数字的最大位数。小数位数必须是从0到p之间的值,即0<=s<=p。默认的小数位数为0
货币或货币值:
2.3.1.2 近似数字
类型:
float | real |
---|
作用:用于表示大致数值(近似值)。在不清楚数值的大小、位数时使用,如:两树相除的结果、开方结果等。
数据类型 | 范围 | 存储 |
---|---|---|
float(n) | -1.79E+308至-2.23E-308、0以及2.23E-308至1.79E+308 | 取决于n的值 |
real | -3.40+38至-1.18E-38、0以及1.18E-38至3.40E+38 | 4字节 |
2.3.1.3 日期和时间
类型:
detetime | smalldatetime |
---|
作用:表示某天的日期和时间的数据类型。
数据类型 | 范围 | 精确度 | 存储 |
---|---|---|---|
datetime | 1753年1月1日到9999年12月31日 | 3.33毫秒 | 2*4字节 |
smalldatetime | 1900年1月1日到2079年6月6号 | 1分钟 | 2*2字节 |
2.3.1.4 字符串
类型:
char | text |
---|---|
varchar |
数据类型 | 范围 | 存储 |
---|---|---|
char(n) | 固定长度,长度为n个字节。n的取值范围为1至8,000 | n字节 |
varchar(n/max) | 可变长度,n的取值范围为1至8,000。max指示最大存储大小是2^31-1个字节。 | 输入数据的实际长度加2个字节 |
text(将来会取消) | 长度可变的字符数据,最大长度为2^31-1个字符。 | 最大2^31-1个字节 |
char和varchar的选择:
- 如果列数据项的大小一致,则使用char。
- 如果列数据项的大小差异相当大,则使用varchar。
- 如果列数据项大小相差很大,而且大小可能超过8,000字节,使用varchar(max)。
长数字数据(如学号)的类型选择:一般选择字符串
- 数字类型有长度限制;
- 使用数字类型时,数据最前方的0会被舍去;
- 数据的拼接不方便;
- 对数据中某(些)位数字的提取、替换、修改等操作不方便。
char(1),tinyint 和 bit的选择:
2.3.1.5 Unicode字符串
Unicode:Universal Chatacter Set(通用字符集)
类型:
nchar | ntext |
---|---|
nvarchar |
数据类型 | 范围 | 存储 |
---|---|---|
nchar(n) | n个字符的固定长度的Unicode字符数据。n值必须在1到4,000之间。 | 2*n个字节 |
nvarchar(n/max) | 可变长度Unicode字符数据。n值在1到4,000之间。max指示最存储大小为2^31-1个字符 | 输入字符个数的两倍+2个字节 |
ntext(将来会取消) | 长度可变的Unicode数据,最大长度为2^30-1个字符。 | 输入字符个数的两倍 |
char和nchar之间的区别:
- 适用范围
- 存储空间
- nchar的1个长度可以表示1个字母、数字、符号、汉字,char的1个长度只能表示1个字母、数字、符号,char的1个长度只能表示1个字母、数字、符号,汉字要用2个长度表示;
- 查询和比较数据时,nchar尾部的空格是有意义的。
2.3.1.6 二进制字符串
类型:
binary | image |
---|---|
varbinary |
数据类型 | 范围 | 存储 |
---|---|---|
binary(n) | 长度为n字节的固定长度二进制数据,其中n是从1到8,000的值。 | n字节 |
varbinary(n/max) | 可变长度二进制数据。n可以取从1到8,000的值。max指示最大的存储大小为2^31-1字节。 | 输入数据的实际长度加2个字节 |
image(将来会取消) | 长度可变的二进制数据,从0到2^31-1个字节 | 最大2^31-1个字节 |
图片等多媒体数据的存储方法:
- 在表中存内容:使用varbinary(max)存储。
- 写数据:将原数据转化为二进制数据存入表;
- 读数据:将二进制数据读出并转化为原数据。
- 在表中存路径:
- 相对路径
- 绝对路径
2.3.1.7 其他数据类型
类型:
cursor | timestamp |
---|---|
sql_variant | uniqueidentifier |
table | xml |
数据类型 | 作用 |
---|---|
cuesor 游标 |
变量或存储过程OUTPUT参数的一种数据类型 |
sql_variant 可变类型 |
用于存储SQL05支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant)的值。 |
table 临时表 |
用于临时存储一组作为表值函数的结果集返回的行。 |
数据类型 | 作用 | 存储 |
---|---|---|
timestamp 时间戳 |
给表加时间戳(每个数据库都有一个)计数器,当对数据库中 包含timestamp列的表执行插入或更新操作时,该计数器值就会增加。 |
8字节 |
uniqueidentifier | Globally Unique Identifier(GUID,全球唯一标识符) | 16字节 |
xml | 存储XML数据 | 最大2GB |
2.3.1.8 用户自定义数据类型
⭐使用SQL Server Management Studio
- 方法:“对象资源管理器” → “数据库” → 选择数据库名称 → “可编程性” → “类型” → “用户定义数据类型” → 右键 → “新建用户定义的数据类型(N)…”。
2.3.1.9 常用数据类型(牢记)
数据类型 | 数据类新 | ||
---|---|---|---|
精确数字 |
int decimal monkey |
字符串 |
char varchar |
近似数字 |
float real |
Unicode 字符串 |
nchar nvarchar |
日期时间 | datetime | 二进制字符串 | varbinary |
Sql Server 字段类型与C#数据类型对应表
Sql Server类型 | C#类型 | Sql Server类型 | C#类型 |
---|---|---|---|
image、binary、varbinary | byte[] | money、decimal、numeric | decimal |
text、ntext、 char、varchar、 cchar、nvarchar |
string | real | single |
int | int | float | double |
tnyint | byte | bit | bool |
smallint | int16 | bigint | int64 |
datetime、timestamp | DateTime |