SQL的约束

Posted cczda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL的约束相关的知识,希望对你有一定的参考价值。

主键

在数据库中,如果有两行记录数据完全一样,那么如何来区分呢? 答案是无法区分,如果有两行记录完全相同,那么对于 mysql 就会认定它们是同一个实体,这于现实生活是存在差别的。

假如我们要存储一个学生的信息,信息包含姓名,身高,性别,年龄。

不幸的是有两个女孩都叫小梦,且她们的身高和年龄相同,数据库将无法区分这两个实体,这时就需要用到主键了。

主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要,主键不能有重复记录且不能为空。

 

默认值约束

默认值约束 (DEFAULT) 规定,当有 DEFAULT 约束的列,插入数据为空时,将使用默认值。

默认值常用于一些可有可无的字段,比如用户的个性签名,如果用户没有设置,系统给他应该设定一个默认的文本,比如空文本或 ‘这个人太懒了,没有留下任何信息’

 

唯一约束

唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

 

外键约束

外键 (FOREIGN KEY) 既能确保数据完整性,也能表现表之间的关系。

比如,现在有用户表和文章表,给文章表中添加一个指向用户 id 的外键,表示这篇文章所属的用户 id,外键将确保这个外键指向的记录是存在的,如果你尝试删除一个用户,而这个用户还有文章存在于数据库中,那么操作将无法完成并报错。因为你删除了该用户过后,他发布的文章都没有所属用户了,而这样的情况是不被允许的。同理,你在创建一篇文章的时候也不能为它指定一个不存在的用户 id。

一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

 

 非空约束

非空约束 (NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

 

以上是关于SQL的约束的主要内容,如果未能解决你的问题,请参考以下文章

SQL中Unique约束有啥用啊?

SQL中Unique约束有啥用啊?

sql中表级约束和列级约束

怎样在sql中创建check约束

请问下在sql server中,我创建约束的时候没有定义约束名,它默认的约束名是啥呀?

sql中 增加约束,限制取值的命令