2020年5月4日
23:05
1、类型
分类 |
介绍 |
Not null |
非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。 |
default |
默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据 |
unique |
唯一值,唯一值,允许为空,但只得一个。确保这一字段中的数据为唯一值。 |
Primary key |
主键,用于保证该字段的唯一性且不能为空, |
foreign |
外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,贝lj每一个外键值必须等于另一个表中主键的某个值。 |
check |
(MySQL中不支持)用于检查数据是否符合范围, |
? ?
2、添加时机
- 创建表时
- 修改表时
3、约束添加类型
-
列级约束
语法上,六种约束类型都支持在列中写,但是外键约束不起作用。
-
表级约束
除了非空和默认都可以写。
4、使用方法
-
添加列级约束
- 案例
Create table table_constraint(
id int primary key auto_increment,#主键自增
name varchar(20) unique,#唯一姓名
sex varchar(2) default ‘ 男‘,#默认性别
QQ int(11) not null#不能为空
);
? ?
-
添加表级约束
案例:
create table table_constraint(
id int,
name varchar(20),
gender char(1),
age int,
majorid int,
constraint pk primary key(id),
constraint uq unique(name),
constraint ck check(gender = ‘男‘ or gender=‘女‘),
constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
);
- 常用的约束添加方法
Create table if not exists table_constraint(
id int primary key auto_increment,#主键自增
name varchar(20) unique,#唯一姓名
sex varchar(2) default ‘ 男‘,#默认性别
QQ int(11) not null#不能为空
constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
);
5、区别
约束 |
是否可以为null |
保证唯一性 |
一个表中可以有多少个 |
是否可以组合 |
主键 |
不可以 |
可以 |
至多一个 |
可以,但不推荐 |
唯一 |
可以,但是只能有一个为null |
可以 |
可以包含多个 |
可以,但不推荐 |
? ?
6、外键特点
- 要求再从表中设计外键关系
- 要求主键的类型要和关联的列的类型一致并且要求一致,名称无要求
- 要求必须先添加主表后创建从表的外键
- 关联的字段必须是一个key(一般是主键或者是唯一)
- 插入数据时要先插入主表后插入从表
- 删除数据时要先删除从表后删除主表
7、修改时添加约束
- 添加非空
alter table table_constraint modify column name varchar(20) not null;
- 添加默认
alter table table_constraint modify column gender char(1) default ‘男‘;
-
添加主键
- 列级约束
alter table table_constraint modify column id int primary key;
- 表级约束
alter table table_constraint add primary key(id);
-
添加唯一
- 列级约束
alter table table_constraint modify column id int unique;
- 表级约束
alter table table_constraint add unique(name);
? ?
-
添加外键
- 列级约束
alter table table_constraint modify column id int primary key;
- 表级约束
alter table table_constraint add foreign key (majorid) references major(id);
? ?
8、修改时删除约束(修改)
-
删除非空
alter table table_constraint modify column name varchar(20) null;
-
删除默认
alter table table_constraint modify column gender char(1);
-
删除主键
alter table table_constraint drop primary key;
-
删除外键
alter table table_constraint drop foreign key majorid;
-
删除唯一
alter table table_constraint drop index name;
??