python基础 — Mysql Server

sql server
对于字符类型的有:
char:固定长度,存储ANSI字符,不足的补英文半角空格。
nchar:固定长度,存储Unicode字符,不足的补英文半角空格
varchar:可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar:可变长度,存储Unicode字符,根据数据长度自动变化。


也就是说:varchar 可变长度,varchar(50)即最长长度为:50个字符。

char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),

那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不够的字符用空格去填。因为是固定长度,所以速度效率高。

位(bit):是计算机内部【数据存储】的最小单位,例如:01011100(是一个8位的二进制数)

字节(Byte):是计算机内部【数据处理】的基本单位,也是一种计量单位表示数据量的多少。1 Byte(字节)= 8 bit(位)

字符:是指计算机中使用的 【文字】【符号】【数字】【字母】。   "哈哈,,。。:‘’1234_ABCD"

字符集:就是字符编码的规则。一切存在的事物都要遵循规则遵循法律,不然整个 ‘世界’ 都会乱套。

 

字符和字节的关系

它们完全不是一个位面的概念,所以两者之间没有【区别】这个说法。在不同的编码里,字符和字节的对应关系不同。

 

为何需要编码?

  所有的信息最终都表示为一个二进制的字符串,每一个二进制位(bit)有0和1两种状态。当我们需要把字符 'A' 存入计算机时,应该对应哪种状态呢?

存储时,我们可以将字符 'A' 用 01000010 二进制字符串表示,存入计算机;读取时,再将01000010还原成字符 'A' 。

那么问题来了,存储时,字符 'A' 应该对应哪一串二进制数呢,是01000010?或者是10000000 11110101?说白了,就是需要一个规则。

这个规则可以将字符映射到唯一一种状态(二进制字符串),这就是编码。

而最早出现的编码规则就是ASCII编码,在ASCII编码规则中,字符 'A' 既不对应01000010,也不对应10000000、11110101,而是对应01000001(不要问为什么,这是规则)。

 

字符集

ASCII 码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节。

UTF-8 编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode 编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。符号:英文标点占一个字节,中文标点占两个字节。

UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。

UTF-16 编码中,世界上任何字符的存储都需要4个字节。

猜你喜欢

转载自www.cnblogs.com/chen-jun552/p/12076887.html