束缚:
束缚对象:字段
如何束缚:与字段类型配合一起束缚字段,如不合乎字段类型和束缚的写操作,则会被回绝。
。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 :既不能为空也不能反复