
文章图片
对于每个程序员来说 , 数据库系统无疑是很熟悉的软件 。 对于数据库中的约束 , 自然也经常打交道了 。
数据库中的约束 , 顾名思义即是对插入数据库中的数据进行了一定的限定 , 这样做的目的是为了保证数据的完整性和有效性 。 这样会大幅度地提升数据库中数据的质量 , 节省数据库空间和提高运行效率 。
那么 , 常见的数据库约束有哪几种呢?我们下面一起来看一下 。
1、主键约束Primary Key
理论上来说 , 每一个数据表都应该设置一个唯一主键 , 它就像身份证一样 , 唯一标识着这条数据 。 设置为主键的列不允许为空 , 也在全表里面唯一 。
2、非空约束Not Null
非空约束意味着这张数据表中的某一列是必填字段 , 既不允许为空 。 就比如我们在使用很多网上系统的时候 , 用户名密码都不能为空一样 。
3、唯一约束Unique
唯一约束用来保护表中的某列数据不允许重复 , 它与主键约束类似 , 但是级别没有主键高 。 一份表中 , 唯一约束可以创建多个 , 并且唯一约束的列通常可以为空 。 通常在一个系统里面 , 类似于手机号、账户、邮箱等 , 都会被设置为唯一约束 。
4、默认约束Default
有些时候 , 我们插入数据的时候 , 不会把所有的数据列内容都填入 , 因此 , 有些列会被设置一个默认值 , 如果没有给该列设置值 , 就会默认值来填充 。 例如我们在很多系统里面 , 插入国籍的时候 , 默认都是中国 , 除非自己去改动 , 否则就会使用默认值 。
5、外键约束Foreign Key
外键约束用于在两个表之间的数据设立关联 , 例如一个城市属于那个国家 , 这个国家的代码应该与国家表的主键相关联 , 即一个城市所属的国家应该存在于地球上 , 而不是会出现某个城市位于世界上没有的国家 。
6、检查约束Check
检查约束意为对该列的数值进行检查 , 例如说我们在做一个系统的时候 , 年龄这个字段 , 其取值范围应该不小于0 , 因为世界上没有小于0岁的人 。 而这个最大值也应该有一个范围 。 据说世界上活得最久的人是清朝的李清云 , 享年256岁 , 一生中娶了24位妻子 , 共有180位子女 。 虽然随着科学的进步 , 人们的寿命在增长 。 但是如果现在出现一个年龄为500岁的人 , 我们都会觉得数据一定是有问题的 。
而这样的问题是经常会发生的 。 例如说2011年的时候 , 意大利农业供应管理局就在数据库中将30多万头意大利奶牛的寿命从122个月提高到了999个月 , 导致很多奶牛在系统里面拥有了近乎“永久”的户口 , 从而用于骗取欧盟的农业补贴 。
因此我们可以看到 , 检查约束对于数据的完整性而言还是很有用的 , 虽然我们也可以将相关代码在业务逻辑层实现 。 但是多一层保护都是好的 , 毕竟有修改数据库权限的系统可能不止一个 。
但是在流行的MySql数据库里 , check约束却是不被支持的 。 不同于PostgresSQL等数据库 , 在MYSQL中 , CHECK只是一段可调用但毫无意义的子句 。 MySQL会直接忽略 。 如果想实现Check约束的话 , 可以考虑写一个触发器 。
除了Check约束以外 , 还有很多其它数据库支持而MySql不支持的操作 , 例如说不支持intersect操作、datetime不支持毫秒等 。
但是这并不妨碍MySql被很多企业所使用 , 毕竟它的优点还是很多的 。
【数据库|数据库中常见的六种约束,有一种MySql不支持,你知道是哪个吗?】
- 2022年已经进入到了尾声|小米13刚发布,中国移动送出喜讯:5G功耗第一,综合评测第一
- 雷军宣布小米13系列将很快登陆全球市场:国外用户激动坏了在中国市场发布后|雷军宣布小米13系列很快登陆全球市场:国外用户激动坏了
- 本文转自:央广网央广网兰州12月13日消息(记者邸文炯)记者从兰州大学获悉|第四届中国研究生人工智能创新大赛圆满落幕
- “通信行程卡”12月13日下线!中国信通院、三大运营商同步删除用户数据
- 西方品牌撤走后,中企对俄罗斯雪中送炭,海量商品填满市场
- 很多朋友在提到电竞手机时|联想拯救者Y70体验:电竞手机中的正装野兽
- 中兴|中兴被拉黑,10亿美元“罚款”没有白交,高通收购案才是关键点!
- 极狐 GitLab 与微软、神州数码达成合作,在中国市场落地运营
- 中国移动|中国移动发布2022年智能硬件质量报告:小米赢麻了!包揽多项冠军
- Galaxy|三星S22+成为老外眼中印象最深刻的旗舰:直屏 外观设计最佳
