暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第34讲:MySQL检查约束和默认约束

何先振 2023-11-23
114

以下文章来源于何先振,责编小何


检查约束



检查约束的作用是检查某个字段的值,是否符合要求。一般指的是值的范围。


例如:性别这个字段只能是男或女。


MySQL中使用check关键字进行添加检查约束。


MySQL5.7版本可以使用check约束,但是check约束对数据验证没有任何作用,不会有报错信息和警告信息。


MySQL8.0就可以使用check约束,插入不符合规范的值会报错。


检查约束,举栗子:


创建表





MySQL5.7版本,添加了check约束,插入不符合规范的数据也可以添加进去。





使用MySQL8.0演示,创建check约束





插入数据时不在check 范围就报错





插入在范围的值就不报错,插入数据成功。








默认约束



默认约束,加了默认约束,如果插入数据时不指定字段的值,就会默认为默认约束指定的值。


默认约束,举栗子:


创建表,添加默认约束





查看表信息,已经添加了默认约束





插入数据时,不指定性别,会给默认值





alter table时,添加默认约束








查看添加成功





删除默认约束





查看删除成功





关于约束面试问题:


问题1:为什么建表时,加not null 或者default?


答:不想让表中出现null值。


问题2:为什么不想要 null值出现?


答:不好比较,null是一种特殊值。比较时只能用专门的is null 和 is not null来比较。碰到运算符,通常返回null。


程序中取数时有null值,容易报null指针异常。


效率不高,影响提高索引效果。


问题3:带auto_increment约束的字段值是从1开始的嘛?


在MySQL中,默认auto_increment的初始值是1,每新增一条记录,字段值自动加1,也可以插入第一条记录时指定插入值,指定插入之后,会在原有值递增。


问题4:每个表都可以任意选择存储引擎的嘛?


外键约束,不能跨引擎使用。


MySQL支持多种存储引擎,每个表都可以指定一个不同的存储引擎。但是如果表之间有外键约束的话,需要保证外键约束的表用相同的存储引擎。


所以每个表并不是随意使用存储引擎的。



推荐阅读书籍




点击上方"何先振"关注并选择设为星标
各类IT技术文章不会错过!

文章转载自何先振,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论