约束
mysql
约束用于确保数据库的数据满足特定的商业规则
在mysql
中,有五种常用的约束:
not null
:非空,基本使用:字段名 字段类型 not null
,如果在列上定义了非空,那么插入数据时,必须为该列提供数据unique
:唯一,基本使用:字段名 字段类型 unique
,当定义了唯一约束后,该列的值是不能重复的,注意:如果没有指定not null
,则声明了unique
的字段可以有多个null
;同时,一张表中可以有多个unique
字段;如果一个列指定了非空和唯一,那么这个列的效果就类似于主键的效果primary key
:主键,基本使用:字段名 字段类型 primary key
,用于唯一的标示表行的数据,当定义主键约束后,该列的值不能重复使用细节:
- 主键的值不能重复,且不能为
null
- 一张表中,只能有一个主键(在实际的开发中,一张表往往都会有一个主键),但可以是复合主键
primary key(列名1, 列名2)
(两个列的内容都相同才会违反主键的约束) - 主键的指定方式有两种:
- 直接在字段名后面指定:
字段名 primary key
- 在表定义最后面写:
primary key(列名)
- 直接在字段名后面指定:
- 使用
DESC 表名
,可以查看主键的使用情况
- 主键的值不能重复,且不能为
foreigin key
:外键,用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或者是unique
约束。当定义外键约束后,要求外键列数据必须在主表的主键列存在或者是为null
,否则从表的数据是添加不进去的,同理,如果主表于从表形成了外键约束,在从表对应数据存在时,主表对应的内容是不能进行删除的check
:用于强制行数据必须满足的条件,假定在sal
列上定义了check
约束,并要求sal
列的值在1000~2000之间,如果不在范围内,就会提示出错基本语法:
字段名 字段类型 check (check条件)
,如sal DOUBLE CHECK (sal > 100 AND sal < 200)
注意:
oracle
和sql server
均支持check
约束,但是mysql5.7
目前还不支持check
,只是作为语法校验