1.约束
概念:对表中的数据进行限定,保证数据的正确性、有效性、完整性。
分类:主键约束:primary key
非空约束:not null
唯一约束:unique
外键约束:foreign key
1.1非空约束 not null 值不为null
1.创建表时添加约束:
create table stu(
id int,
name varchar(20) not null #name为非空
);
2.给已经存在的表添加约束:
alter table stu modify name varchar(20) not null;
3.删除约束: alter table stu modify name varchar(20) ;
1.2唯一约束 unique 值不重复
1. 创建表时添加约束:
create table stu(
id int,
phone_number varchar(20) unique #电话号码唯一
) ;
(唯一约束限定的列可以有多个null)
2.给已经存在的表添加约束:
alter table stu modify phone_number varchar(20) unique;
(表中如果有重复的数据,要删除重复数据后再添加约束)
3.删除约束: alter table stu modify phone_number varchar(20) ; #不能删除约束
alter table stu drop index phone_number;
1.3主键约束 primary key
注意:
1.含义:非空且唯一
2. 主键是表中记录的唯一标识
3.一张表只能有一个字段为主键
1. 创建表时添加约束:
create table stu(
id int primary key, #主键约束
name varchar(20)
);
2.删除约束:
alter table stu drop primary key;
3.给已经存在的表添加主键:
alter table stu modify id int primary key;
自动增长:
1.概念:某一列是数值类型的,使用 auto_increment 可以完成值得自动增长。(根据上一条记录的值+1)
2.创建表时添加主键约束,其自动增长:
create table stu (
id int primary key auto_increment,
name varchar(20)
);
3.删除自动增长:alter table stu modify id int;
4.添加自动增长:alter table stu modify id int auto_increment;
1.4 外键约束:foreign key
外键:A表中的某列是B表中的主键,则称这列为A的外键
1.创建表时添加外键:
create table 表名 (
列名 类型名
外键列 外键类型,
constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称 )
);
/* 主表 部门表,id dep_name dep_location*/
create table department (
id int primary key auto_increment,
dep_name varchar(20),
dep_location varchar(20)
);
/* 员工表 ,id name age dep_id */
create table employee (
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int, #外键,所在部门的ID
constraint emp_dept_fk foreign key(dep_id) references department(id)
);
2.删除外键:
alter table 表名 drop foreign key 外键名称;
alter table employee drop foreign key emp_dept_fk;
3.给已经存在的表添加外键:
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表名称(主表列名称);
alter table employee add constraint emp_dept_fk foreign key(dep_id) references department(id);
4.级联操作
4.1分类:
级联更新:on update cascade
级联删除:on delete cascade
4.2添加级联操作: alter table 表名 add constraint 外键名称
foreign key(外键字段名) references 主表名称(主表列名称)
on update cascade on delete cascade ;