束缚:

束缚对象:字段

如何束缚:与字段类型配合一起束缚字段,如不合乎字段类型和束缚的写操作,则会被回绝。

。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 :既不能为空也不能反复