一、char,定长字符串 (0 - 255)
是指存储时占用固定长度的存储空间
定义语法:字段名 char( L ),L:表示分配给数据存储空间大小,字符数, L <=255,汉字英文都算1个字符。
注:1、如果L设置为10,插入3个字符长度,后面不够的会补齐空格。
2、超出长度时,在sql_mode为严格模式时,将报错,非严格模式会将超出的部分截掉,进行插入
结论:char型适合存储固定长度的字符串,例如密码32位,手机11位
char型由于是固定长度,处理速度要比varchar型快。
二、varchar型,变长字符串。
存储数据时,会根据数据的长度,动态占用需要的长度。
优点:空间利用率高,缺点:速度比char慢一些
1、定义语法
字段 varchar(L),L字符数。
实际占用长度L + 1,当 0 < L <=255;
实际占用长度L + 2, 当 255 < L <= 65535
+1 和 +2 是因为存储时,除了存储数据,还需要1或2个字节来保存字符串的长度
2、汉字的存储
UTF8 65535 / 3 = 21845 实际是21844个汉字
GBK 65535 / 2 = 32767 实际是32767个汉字
三、text大文本类型
1、Text大文本类型又可以细分为:tinytext, mediumtext, text, longtext
2、定语语法
字段名称:text
注:大文本类型定义时不能有默认值。
三、Blob,二进制对象类型
它和text类似,也分为:tinyblob, blob, mediumblob, longblob
占用的空大小见上图
它与text类型的区别就是它是用于存储二进制数据的。如图片的文件数据
四、Enum,枚举类型
用于存储单选数据,在网站中,表单里radio就是单选钮
定义语法:字段名 enum(‘选项1’,’选项2’,…)
最多允许65535个单选项,不允许插入未在枚举类型定义时定义的选项内容
五、Set,集合类型
适合于保存多选数据。
定义:字段名 set(‘选项1’,’选项2’,’选项3’,……)
最多可以定义64个选项,查询语句:
SELECT 字段 FROM 表名 WHERE find_in_set('查找的选项', 字段名);