约束
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,只是作为语法校验