char
定长字符:指定长度后,系统一定会分配指定的空间用于存储数据
语法:char(L),L代表字符数(中文与英文字母占用一样),L长度为0-255
varchar
变长字符:指定长度后,会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度)
语法:varchar(L),L代表字符数,L的长度理论值为0-65535
因为varchar要记录数据长度(系统根据长度自动分配空间),所以每个varchar数据产生后,系统都会在数据后面增加1-2个字节的额外开销,用来保存数据所占有的空间长度
如果确定数据一定是占指定长度,那么使用char类型
如果不确定数据到底有多少,那么使用varchar类型;
如果数据长度超过255个字符,不论是否固定长度,都会使用text,不再使用char和varchar
text
文本类型,本质上没有MySQL提供了两种文本类型
text:存储普通的字符文本
tinytext:系统使用一个字节来保存(数据所在位置),实际能存储的数据为2^8+1(能保存的字符树)
text:使用两个字节保存,实际存储为2^16+2
mediumtext