SQLServer数据类型、字符编码ANSI和ASCII区别、Unicode和UTF-8区。。。Character 字符串:
数据类型描述存储
char(n)固定长度的字符串。最多 8,000 个字符。n
varchar(n)可变长度的字符串。最多 8,000 个字符。
varchar(max)可变长度的字符串。最多 1,073,741,824 个字符。
text可变长度的字符串。最多 2GB 字符数据。
Unicode 字符串:
数据类型描述存储
nchar(n)固定长度的 Unicode 数据。最多 4,000 个字符。
nvarchar(n)可变长度的 Unicode 数据。最多 4,000 个字符。
nvarchar(max)可变长度的 Unicode 数据。最多 536,870,912 个字符。
ntext可变长度的 Unicode 数据。最多 2GB 字符数据。
Binary 类型:
数据类型描述存储bit允许 0、1 或 NULL
binary(n)固定长度的⼆进制数据。最多 8,000 字节。
varbinary(n)可变长度的⼆进制数据。最多 8,000 字节。
varbinary(max)可变长度的⼆进制数据。最多 2GB 字节。
image可变长度的⼆进制数据。最多 2GB。
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 之间的货币数据。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 字节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 变量。
其他数据类型:
数据类型描述
sql_variant存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
uniqueidentifier存储全局标识符 (GUID)。
xml存储 XML 格式化数据。最多 2GB。
cursor存储对⽤于数据库操作的指针的引⽤。
table存储结果集,供稍后处理。
字符编码ANSI和ASCII区别、Unicode和UTF-8区别
⼀.位
unicode汉字计算机存储信息的最⼩单位,称之为位(bit),⾳译⽐特,⼆进制的⼀个“0”或⼀个“1”叫⼀位。
⼆.字节
字节(Byte)是⼀种计量单位,表⽰数据量多少,它是计算机信息技术⽤于计量存储容量的⼀种计量单位,8个⼆进制位组成1个字节。在ASCII码中,⼀个标准英⽂字母(不分⼤⼩写)占⼀个字节位置,⼀个标准汉字占⼆个字节位置。
三.字符
字符是指计算机中使⽤的⽂字和符号,⽐如“1、2、3、A、B、C、~!·#¥%…*()+”等等。
四.ASCII码
先从最简单的ASCII说起吧,这个⼤家也熟悉:全名是American Standard Code for Information Interchange, 叫做“美国信息交换标准码”。ASCII码中,⼀个英⽂字母(不分⼤⼩写)占⼀个字节的空间,⼀个中⽂汉字占两个字节的空间。ASCII码是⽬前最普及的⼀种字符编码,它扎根于我们的互联⽹,操作系统,键盘,打印机,⽂件字体和打印机等。
ANSI码
ANSI编码是⼀种对ASCII码的拓展:ANSI编码⽤0x00~0x7f (即⼗进制下的0到127)范围的1 个字节来表⽰ 1 个英⽂字符,超出⼀个字节的 0x80~0xFFFF 范围来表⽰其他语⾔的其他字符。也就是说,ANSI码仅在前128(0-127)个与ASCII码相同,之后的字符全是某个国家语⾔的所有字符。值得注意的是,两个字节最多可以存储的字符数⽬是2的16次⽅,即65536个字符,这对于⼀个语⾔的字符来说,绝对够了。还有ANSI编码其实包括很多编码:中国制定了GB2312编码,⽤来把中⽂编进去另外,⽇本把⽇⽂编到Shift_JIS⾥,韩国把韩⽂编到Euc-kr⾥,各国有各国的标准。受制于当时的条件,不同语⾔之间的ANSI码之间不能互相转换,这就会导致在多语⾔混合的⽂本中会有乱码。
Unicode编码
为了解决不同国家ANSI编码的冲突问题,Unicode应运⽽⽣:如果全世界每⼀个符号都给予⼀个独⼀⽆⼆的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表⽰的,这是⼀种所有符号的编码。
Unicode标准也在不断发展,但最常⽤的是⽤两个字节表⽰⼀个字符(如果要⽤到⾮常偏僻的字符,就需要4个字节)。现代操作系统和⼤多数编程语⾔都直接⽀持Unicode。
但是问题在于,原本可以⽤⼀个字节存储的英⽂字母在Unicode⾥⾯必须存两个字节(规则就是在原来英⽂字母对应ASCII码前⾯补0),这就产⽣了浪费。那么有没有⼀种既能消除乱码,⼜能避免浪费的编码⽅式呢?答案就是UTF-8!
UTF-8编码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论