关于mysql:MySQL约束

束缚:

​ 束缚对象:字段

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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理