你知道是哪个是常见的约束中MySql不支持的吗?

admin8个月前笔记63

数据库中的约束,顾名思义即是对插入数据库中的数据进行了一定的限定,这样做的目的是为了保证数据的完整性和有效性。这样会大幅度地提升数据库中数据的质量,节省数据库空间和提高运行效率。那么,常见的数据库约束有哪几种呢?我们下面一起来看一下。

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被很多企业所使用,毕竟它的优点还是很多的。


相关文章

最好用的 6 款 Vue 拖拽组件库推荐

最好用的 6 款 Vue 拖拽组件库推荐

vue 拖拽组件库(drag-and-drop)组件在使用 Vue 框架开发中非常常见的需求,做个内容行排序,拖拽小组件到网页上这类都需要用到拖拽组件。本文记录了我自己用过的 6...

前端框架选哪个?Vue,React 还是 Angular

前端框架选哪个?Vue,React 还是 Angular

Web 前端开发是时下最热门的领域之一,为了提升开发效率和用户体验从而创造更具竞争力的产品,选择适合自己项目或团队的开发框架成为技术决策者首先需要解决的问题。那么2021前端框架选哪个?Vue,Rea...

Select进阶查询·连接查询

Select进阶查询·连接查询

一、连接查询定义:把多张表通过连接条件临时组成1张新表,在临时的新表里有连接表的所有表头和数据。连接查询分类:内连接、外连接、全连接二、连接语法结构:三、内连接:等值连接:使用相等判断做连接条件非等值...

如何在 Ubuntu中创建可引导 USB

如何在 Ubuntu中创建可引导 USB

Etcher 是由 Balena 创建的实用程序,它可以使用 .iso 文件创建可启动的 USB 和 SD 卡,q其独特的方式让你的生活变得轻松。在本指南中,我将向你展示...

学习如何使用 Git 来压扁、变基和精选

学习如何使用 Git 来压扁、变基和精选

当我与别人谈到 Git 时,几乎每个人都对 git rebase 命令 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录、删除仓库、然后再重新克隆一个仓库。我认为这是因为...

CentOS7怎样在VMware下配置桥接网络

CentOS7怎样在VMware下配置桥接网络

首先,在以下的配置都操作好之后,要确认宿主机的网络连接方式,若为需要认证的网络,则可能会出现宿主机与虚拟机能互相ping,但虚拟机不能ping外网的情况一、虚拟机配置确保虚拟机为关机的状态,在VMwa...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。