sql之数据类型

  1. 区分大小写

set names utf8;//设置字符集
set names utf8 collate utf8_bin;//对字符进行二进制比较,可以修改排序规则,从而起到区分大小写的作用。

  1. CHAR和VARCHAR

CHAR(N)用来保存固定长度的字符串,VARCHAR(N)用来保存变长字符类型,对于CHAR类型,N的范围是0-255,对于VARCHAR类型,N的范围是0-65535,其中N都代表字符长度,而非字节长度。
对于CHAR类型的字符串,mysql数据库会自动对存储列的右边进行填充(Right Padded)操作,直到字符串达到指定的长度N,而在读取该列时,mysql数据库会自动将填充的字符删除,可以显示将SQL_MODE设置为PAD_CHAR_TO_FULL_LENGTH,这是填充的字符不会被删除。
LENGTH()查询字符串所占的字节数。
CHAR_LENGTH()查询字符串的长度。
VARCHAR类型存储变长字段的字符类型,其存储时需要在前缀长度列表加上实际存储的字符,该字符占用1-2个字节的空间,当存储的字符串长度小于255字节时,其需要1字节的空间,当大于255字节时,需要2字节的空间。所以对于单字节latin1来说,CHAR(10)占用10个字节,而VARCHAR(10)占用11字节,因为其需要1字节来存放字符长度。
虽然CHAR和VARCHAR的存储方式不太相同,但是对于两个字符串的比较,都只比较值,忽略CHAR值存在的右填充,即使显式设置了值。

  1. BINARY和VARBINARY

这两个存储的是二进制的字符串。
BINARY(N)和VARBINARY(N)中的N是字节长度,对于BINARY(N),其可存储的字节固定为10,而对于CHAR(10),其可存储的字节视字符集的情况而定。

  1. ENUM和SET类型

ENUM和SET类型都是集合类型,不同的是ENUM类型最多可枚举65536个元素,而SET类型最多枚举64个元素。

猜你喜欢

转载自blog.csdn.net/weixin_41811413/article/details/86777062