束缚:
束缚对象:字段
如何束缚:与字段类型配合一起束缚字段,如不合乎字段类型和束缚的写操作,则会被回绝。
。unsigned/signed
unsigned 无符号(<=0)必须与数值类型配合应用
signed 有符号(正数 0 负数)默认,必须与数值类型配合应用
。not null:非空束缚(不能为空)
为什么生产中倡议应用 not null
容许为 null 的状况下,会有哪些不利的影响?
①. 空值的字段增加索引,空值会寄存在 b +tree 最右边,造成索引性能降落
②. 造成磁盘和内存空间的节约。给空值字段增加索引,会多占用一个字节
③. 造成 count(*) 和 count(name) 统计后果不精确
在 innodb 存储引擎下 select count(*) 为什么慢
mvcc 个性,innodb 存储引擎只能全表扫描,累积计数
。default:给字段指定默认值
。unique:唯一性束缚(字段值不能反复,然而能够为空)
在生产中,给已有数据增加 unique,前提必须是已有数据不能有反复值
。auto_increment:自增束缚,必须是与整型配合应用
auto_increment 5.7 自增值回溯的问题
起因:5.7 版本表的 auto_increment 是基于内存去存储的,不会长久化到磁盘上,咱们在重启数据库之后,内存中的数据被开释,会从新计算作为下一个自增值。
8.0 版本解决了自增值回溯的问题。
。primary key:既不能为空也不能反复