MySQL数据库(三)—— 表的约束

一、概念

约束:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

二、分类

1.主键约束:primary key

2.非空约束:not null

3.唯一约束:unique

4.外键约束:foreign key

三、非空约束 not null,被修饰列值不能为空

1.创建表时添加非空约束

create table student(id int, name varchar(32) not null); -- name为非空

2.删除非空约束

alter table student modify name varchar(32);

 3.创建表完成后,添加非空约束

alter table student modify name varchar(32) not null;

四、唯一约束 unique,被修饰列值不能重复

1.创建表时添加唯一约束

 create table student(id int, phone_number varchar(20) unique); -- phone_number列添加了唯一约束

2.删除唯一约束

alter table student drop index phone_number;

3.创建表完成后,添加唯一约束

alter table student modify phone_number varchar(20) unique;

注意:这样删除不掉唯一约束:alter table student modify phone_number varhcar(20);

注意:MySQL中唯一约束限定的列的值可以有多个null。

五、主键约束 primary key

(一) 注意:

1. 主键的含义:非空且唯一。

2.一张表只能有一个字段为主键

3.主键就是表中记录的唯一标识

(二)添加主键

1.创建表时添加主键约束

create table student(id int primary key, name varchar(20));

2.删除主键约束

alter table student drop primary key;

3.创建表完成后,添加主键

alter table student modify id int primary key;

注意:这样删除不掉主键约束:alter table student modify id int;

六、主键约束_自动增长

1.概念:如果某一列是数值类型的,使用auto_increment可以来完成值的自动增长

2.创建表时添加主键约束,并完成自增长。

create table student(id int primary key auto_increment, name varchar(32));

3.删除自动增长(主键约束删除不掉,自动增长约束可以删除)

alter table student modify id int;

4.创建表完成后,给主键列添加自动增长约束

alter table student modify id int auto_increment;

七、外键约束 foreign key,让表与表产生关系,从而保证数据的正确性

1.在创建表时添加外键约束

语法:

create table(

  ……

  外键列

  constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称 -- 可以是主键,也可以是被唯一约束的列)

);

举例:

创建部门表(id, dept_name, dept_location)

create table department(

  id int primary key auto_increment,

  dept_name varchar(20),

  dept_location varchar(20)

);

创建员工表(id, name, age, dept_id)

create table employee(

  id int primary key auto_increment,

  name varchar(20),

  age int,

  dept_id int,

  constraint emp_dept_fk foreign key (dept_id) references department(id)

);

外键名随便起,只要不重复即可。

2.删除外键

alter table employee drop foreign key emp_dept_fk;

alter table 表名 drop foreign key 外键名称;

3.创建表完成后,添加外键约束

alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id);

alter table 表名add constraint 外键名称 foreign key (列名) references 主表名称(主表的列的名称);

八、外键约束——级联操作

1.添加外键时,设置级联更新

alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on update cascade;

2.级联删除(部门表删除id为1,员工表对应数据也都删除)

alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on delete cascade;

3.设置级联更新和级联删除

alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on update cascadeon delete cascade;

4.总结语法:

alter table 表名add constraint 外键名称 foreign key (列名) references 主表名称(主表的列的名称) on update cascadeon delete cascade;

原文地址:https://www.cnblogs.com/upyang/p/11996493.html