• 约束条件是在表上强制执行的数据检验规则
• 用来保证创建的表的数据完整性和准确性
• 主要在两方面对数据进行约束:空值和重复值
MySQL数据库常用约束条件

主键约束(primary key)
• 每个表中只能有一个主键
• 主键值须非空不重复
• 可设置单字段主键,也可设置多字段联合主键
联合主键中多个字段的取值完全相同时,才违反主键约束
如何添加主键约束
列级添加主键约束:create table <表名> (<字段名1> <字段类型1> primary key,……<字段名n> <字段类型n>);
表级添加主键约束:create table <表名>(<字段名1> <字段类型1>,……<字段名n> <字段类型n>,[constraint 主键约束名]
primary key(字段名1[,字段名2,…字段名n]));
唯一约束(unique)
• 指定字段的取值不能重复,可以为空,但只能出现一个空值
如何添加唯一约束
列级添加唯一约束:create table <表名> (<字段名1> <字段类型1> unique,……<字段名n> <字段类型n>);
表级添加唯一约束:create table <表名> (<字段名1> <字段类型1,……<字段名n> <字段类型n>,[constraint 唯一约束名] unique
(字段名1[,字段名2…字段名n]));
自动增长列(auto_increment)
• 指定字段的取值自动生成,默认从1开始,每增加一条记录,该字段的取值会加1
• 只适用于整数型,配合主键一起使用
•创建自动增长约束:
create table <表名> (<字段名1> <字段类型1> primary key auto_increment,……<字段名n> <字段类型n>);
非空约束(not null)
• 字段的值不能为空
• 创建非空约束:create table <表名> (<字段名1> <字段类型1> not null,……<字段名n> <字段类型n>);
默认约束(default)
• 如果新插入一条记录时没有为该字段赋值,系统会自动为这个字段赋值为默认约束设定的值
• 创建默认约束:create table <表名> (<字段名1> <字段类型1> default value,……<字段名n> <字段类型n>);
外键约束(foreign key)
在一张表中执行数据插入、更新、删除等操作时,DBMS都会跟另一张表进行对照,避免不规范的操作,以确保数据存储的完整性。
• 某一表中某字段的值依赖于另一张表中某字段的值
• 主键所在的表为主表,外键所在的表为从表
• 每一个外键值必须与另一个表中的主键值相对应
• 创建外键约束:create table <表名> (<字段名1> <字段类型1>,……<字段名n> <字段类型n>,[constraint 外键约束名]
foreign key(字段名) references <主表>(主键字段));
