版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33322074/article/details/86532164
一、字符串类型都有哪些
二、首先是char类型和varchar类型
char的M表示固定长度,适用于学号,身份证号,电话号码等固定的数字序列。
不管存储几个都要占用M个字符。而Varchar的M是所能允许的最大值,varchar的字节是可变的。
上图证明了M是字符数,但是总长度仍是字节来表示。因为utf8字符占3个字节。gbk占2个字节。21845*3=65535
32767*2=65534
三、出现一个问题
即:varchar类型的字节长度65535,那么问题来了,我们可不可以存储一个字段该字段的长度为65535呢?
答案是不可以的。那可不可以存储一个字节长度为65534呢?也是不可以的。那么可不可以存储一个字节为65533呢?也是有原因的。
为什么?因为
注意:如果所有字段中有一个是可以为null,那么就要消耗一个字节去记录。
只有都为not null时才不需要浪费一个字节。
四、text类型及其兄弟类型
1、text类型其实和varchar类型差不多。
不同点是:定义时,通常不用指定长度,可以自己计算。tinyText占1个字节,text占2个字节,mediumText占3个字节。longtext占4个字节。
五、enum类型:所谓enum类型是枚举类型
所谓枚举类型,就是有多个选项,但是只能选一个。比如男女选项,你只能选择一个。枚举共占2个字节,即有65535个选项量。
而这些在数据库中存储时是以数字来存储的。内部是数字运算
存储其他的内容就会报错,也可以存储1,2等数字。例如:
六、set集合类型
set集合类型是:给出有多个选项可以都选也可以都不选。就好比一个人可以有多个爱好,也可以有1个爱好。set集合占8个字节,总共有64个选项。不过set集合在mysql中的运算是位运算。