1. bit
bit[(M)] : 位字段类型。M 表示每个值的位数,范围从 1 到 64。如果 M 被忽略,默认为 1。
如果我们有这样的值,只存放 0 或 1,这时可以定义 bit(1)。这样可以节省空间。
mysql> create table tt4 ( id int, a bit(8)); Query OK, 0 rows affected (0.01 sec)
同时它是按照 ASCII 码对应的值显示。比如下面这张图里面,65 是 A 所对应的 ASCII。
2. float(小数类型)
float[(m, d)] [unsigned] : m 指定显示长度,d 指定小数位数,占用空间 4 个字节
这个 m 的意思是小数点前面的位数加上小数点后面的个数要等于这个 m,同时如果用户输入的数大于这个 m 的话,它会先按照四舍五入的方式尝试截断处理,如果结果符合这个 m 的话那它就显示 OK,不然的话就插入失败。
我们先设置一个总长度为 4,小数点后面有 2 位的 salary。
create table tt6(id int, salary float(4,2));
在下面这张图里面 -99.991,最后的一个 1 被四舍五入掉了。如果我们把这个 1 换成 5,那么这边就会插入失败。
3. decimal(小数类型)
decimal(m, d) [unsigned] : 定点数 m 指定长度,d 表示小数点的位数
这个看起来和上面那个 float 一样,区别在于这个 decimal 的精度更高。
float 表示的精度大约是 7 位。 decimal 整数最大位数 m 为 65。支持小数最大位数 d 是 30。如果 d 被省略,默认为 0。如果 m 被省略,默认是 10
我们看下面的代码和结果,在高精度的情况下,decimal 可以保持更高的精度。
mysql> create table tt8 ( id int, salary float(10,8), salary2 decimal(10,8));
4. char(字符串类型)
char(L): 固定长度字符串,L 是可以存储的长度,单位为字符,最大长度值可以为 255
这个没什么好说的,就是普通的 char 类型,在这边写出来是为了和下面的 varchar 来进行对比
5. varchar(字符串类型)
varchar(L): 可变长度字符串,L 表示字符长度,最大长度 65535 个字节
我们来看下面的这张图,varchar 里面的 L 是 6,表示这里可以存放 6 个字符。但是如果我们只填入 5 个字符的话,那它就只显示 5 个字符。但是如果我们填入超过 6 个字符的话,那就会报错。所以我们可以发现,这个 varchar 有点像那个 vector,只不过这个'vector'的上限被 L 给锁定了。


