Mysql约束:Mysql常用的约束条件

时间:2021-12-09

Mysql约束

1.基本介绍:

约束用于确保数据库的数据满足特定的商业规则。
在mysql中,约束包括: not null、unique、primary key、foreign key、default、check六种.

2.primary key(主键)

用于唯一的标示表行的数据,当定义主键约束后,此列不能重复
字段名 字段类型 primary key
primary key(主键)-细节说明:
① primary key不能重复而且不能为null。
② 一张表最多只能有一个主键,但可以是复合主键
③ 主键的指定方式有两种:
a.直接在字段名后指定:字段名 primakry key
b.在表定义最后写primary key(列名);
④ 使用 desc 表名,可以看到primary key的情况.
⑤ 提醒:在实际开发中,每个表往往都会设计一个主键.

3.not null(非空)

如果在列上定义了not null,那么当插入数据时,必须为列提供数据,值不能为空。
字段名 字段类型 not null

4.default(默认)

默认约束,保证字段总会有值,即使没有插入值,都会有默认值
字段名 字段类型 default 默认值
一般搭配 not null 使用
`name` VARCHAR(32) NOT NULL DEFAULT '' -- 默认值为一个空字符串

5.unique(唯一)

当定义了唯一约束后,该列值不能重复的。
字段名 字段类型 unique
unique细节:
① 如果没有指定not null,则unique字段可以有多个null
② 一张表可以有多个unique字段
注:unique not null 约等于 primary key

6.foreign key(外键)

用于定义主表和从表之间的关系: 外键约束要定义在从表上,主表则必须具**有主键约束 **或是 unique约束当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null (学生/班级图示)
FOREIGN KEY (本表字段名) REFERENCES
生表名(主键名或unique字段名)
foreign key(外键)–细节说明:
① 外键指向的表的字段,必须是 primary key 或者是 unique
② 表的引擎必须是innodb,这样的表才支持外键
③ 外键字段的类型要和主键字段的类型必须一致(长度可以不同)
④ 外键字段的值,必须在主键字段中出现过,或者为null [前提是外键字段允许为null]
⑤ 一旦建立主外键的关系,数据不能随意删除了

外键示意图

Mysql约束:Mysql常用的约束条件 图1

7.check

用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000 ~ 2000之间,如果不再1000 ~ 2000之间就会提示出错。
提示: oracle 和 sql server 均支持check ,但是 mysql5.7 及旧版本不支持check , 只做语法校验,但不会生效。
基本语法:
列名 类型 check (check条件)
user表
id, name, sex(man,woman), sal(大于100 小于900)
在mysql中实现check的功能,一般是在程序中控制,或者通过触发器完成。
    收藏