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]
⑤ 一旦建立主外键的关系,数据不能随意删除了
外键示意图
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的功能,一般是在程序中控制,或者通过触发器完成。
收藏