约束
概念:限制表中的数据,保证数据的正确性、有效性和完整性。
约束的分类
单表约束:
非空约束:not null,规定某一列的数据不能为null.
唯一约束:unique,规定某一列的数据唯一不重复。
主键约束:primary key,规定某一列唯一不重复且不能为null,一般用来作为一条数据的唯一标识。
主键的特点:一个表中主键只有一个,如果主键是int类型,还可以配合auto_increment自动增长。
多表约束:
外键约束:
添加和删除单表约束
1、创建表时添加约束(掌握)
create table 表名(
列1 数据类型 约束1 约束2 ...,
列2 数据类型 约束1 约束2 ...,
...
列n 数据类型 约束1 约束2 ...
);
例如:
create table stu(
id int primary key auto_increment,
name varchar(20) not null,
phone varchar(20) unique
-- primary key(id,name) -- 复合主键/联合主键,id和name共同作为一个主键。
);
2、创建表之后添加约束(了解)
-- 添加非空约束
alter table 表名 modify 列名 数据类型(长度) not null;
-- 删除非空约束
alter table 表名 modify 列名 数据类型(长度);
-- 添加唯一约束
alter table 表名 modify 列名 数据类型(长度) unique;
-- 删除唯一约束
alter table 表名 drop index 列名;
-- 添加主键约束
alter table 表名 modify 列名 数据类型(长度) primary key;
-- 删除主键约束
alter table 表名 drop primary key;
补充:delete from 表名和truncate table 表名的区别?
1.delete from 表名是一条一条的删除,属于DML语句而truncate table 表名是先删除表,
再创建一张一样的新表,属于DDL语句
2.delete from 表名 :删除所有数据之后再重新添加数据,主键自动增长的列的值是接着之前的增
加。truncate table 表名 :删除表之后创建新表重新添加数据,主键自动增长的列的值是从1开始。
1
2
3
4
外键约束
在这里插入图片描述
外键约束的概念
如果一张表(A表)的某一列的值都来自于另一张表(B表)的主键值(或者唯一非空的列的值也可以)。那么就需要给A表的这一列添加约束,这个约束就叫做外键约束。有时候将A表叫做从表/外键表,B表叫做主表/主键表/引用表
添加外键
1. 在创建表时,可以添加外键
create table 表名(
......
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
)
2. 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
3. 创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
多表关系以及建表原则
一对一:在任意一方添加外键指向另一方的主键,但是外键字段必须添加unique唯一约束。
一对多/多对一:在多的一方添加外键指向一的一方的主键。
多对多:创建一张中间表,在中间表中至少有两个字段分别指向多对多双方的主键。