数据库中的约束,顾名思义,限制插入数据库的数据。这样做的目的是保证数据的完整性和有效性。这将大大提高数据库中数据的质量,节省数据库空间,提高运行效率。那么,常见的数据库约束有哪些呢?下面一起来看看吧。1.主键约束PrimaryKey从理论上讲,每张数据表都应该有一个唯一的主键,就像身份证一样唯一标识这条数据。设置为主键的列不允许为空,在全表中也是唯一的。2、非空约束NotNull非空约束是指该数据表中的某列为必填字段,且均不允许为空。比如我们在使用很多在线系统的时候,用户名和密码不能为空。3、唯一性约束Unique唯一性约束用于保护表中某一列的数据不被重复。它类似于主键约束,但级别没有主键高。在一个表中,可以创建多个唯一约束,唯一约束的列通常可以为空。通常在一个系统中,类似手机号、账号、邮箱等,都会被设置为唯一约束。4.默认约束Default有时候,我们在插入数据的时候,不会把数据列的所有内容都填进去,所以有些列会设置一个默认值,如果该列没有设置值,就会用默认值来填充。比如在很多系统中,在输入国籍的时候,默认是中国,除非你自己改,否则都会使用默认值。5.外键约束ForeignKey外键约束用于建立两个表之间数据之间的关联。比如一个城市属于哪个国家,这个国家的代码应该和country表的主键相关联,即这个城市属于哪个国家应该存在于地球上,而不是某个城市位于世界上不存在的国家。6.CheckconstraintCheck检查约束是指检查列的值。比如我们在搭建系统的时候,age字段的取值范围不能小于0,因为世界上没有小于0的人。而这个最大值也应该有一个范围。据说世界上最长寿的人是清朝的李青云,享年256岁。他一生娶了24个妻子,共有180个孩子。虽然随着科学的进步,人们的寿命越来越长。但是如果有一个人的年龄是500岁,我们都会觉得这个数据肯定有问题。而且这样的问题经常发生。例如,2011年,意大利农业供应管理局将超过30万头意大利奶牛的寿命从数据库中的122个月增加到999个月,导致许多奶牛在系统中几乎拥有“永久”账户。从而骗取欧盟的农业补贴。所以我们可以看到检查约束对于数据完整性还是非常有用的,虽然我们也可以在业务逻辑层实现相关代码。但多一层保护是好的。毕竟拥有修改数据库权限的系统可能不止一个。但是在流行的MySql数据库中,不支持检查约束。与PostgresSQL等数据库不同,在MYSQL中,CHECK只是一个可调用但无意义的子句。MySQL将简单地忽略它。如果要实现Check约束,可以考虑写一个trigger。除了Check约束,还有很多数据库支持而MySql不支持的操作,比如不支持相交操作,datetime不支持毫秒等。但这并不妨碍MySql被很多人使用公司。毕竟,它有很多优点。
