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 | 允许 0、1 或 NULL |
| binary(n) | 固定长度的二进制数据,最多 8,000 字节 |
| varbinary(n) | 可变长度的二进制数据,最多 8,000 字节 |
| varbinary(max) | 可变长度的二进制数据,最多 2G 字节 |
| image | 可变长度的二进制数据,最多 2G |
4. Number 类型
| 数据类型 | 描述 | 存储 |
|---|---|---|
| tinyint | 允许从 0 到 255 的所有数字 | 1 字节 |
| smallint | 允许从 -32,768 到 32,767 的所有数字 | 2 字节 |
| int | 允许从 -2,147,483,648 到 2,147,483,647 的所有数字 | 4 字节 |
| bigint | 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 | 8 字节 |
| decimal(p,s) | 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是18。s 参数指小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 | 5-17 字节 |
| numeric(p,s) | 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是18。s 参数指小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 | 5-17 字节 |
| smallmoney | 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 | 4 字节 |
| money | 介于 -922,337,203,685,477.5808 到 922,337,203,685,477.5807(对于 Informatica,为 -922,337,203,685,477.58 到 922,337,203,685,477.58。 Informatica 仅支持两位小数,而不是四位。) | 8 字节 |
| float(n) | 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指该字段保存 4 字节还是 8 字节。float(24)保存 4 字节,而float(53)保存 8 字节。n 的默认值是 53。 | 4 或 8 字节 |
| real | 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 | 4 字节 |
5. Date 类型
| 数据类型 | 描述 | 存储 |
|---|---|---|
| datetime | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒 | 8 bytes |
| datetime2 | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒 | 6-8 bytes |
| smalldatetime | 从 1900 年 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 字节不同数据类型的数据,除了 text、ntext 以及timestamp。 |
| uniqueidentifier | 存储全局标识符(GUID)。 |
| xml | 存储 XML格式化数据,最多 2GB。 |
| cursor | 存储对用于数据库操作的指针的引用。 |
| table | 存储结果集,供稍后处理。 |
-
1. C# 中的 类型 对应的Sql类型?
| C# 类型 | SQL 类型 |
|---|---|
String | char, varchar, nvarchar, text, nchar, ntext …… |
Bool | bit |
DateTime | datetime |
Int | int |
byte | tinyint |
Short | smallint |
Long | bigint |
Double | money, smallmoney |
Float | float, real |
Decimal | decimal, numberic |
Guid | uniqueidentifier |
-
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 字符集。