约束-非空约束、主键约束、主键约束-自动增长、外键约束和外键约束-级联操作
约束-非空约束
非空约束:not null
1.创建表时添加约束
CREATE TABLE stu(
if INT;
NAME VARCHAR(20) NOT NULL -- name为非空
);
2.创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3.删除name的非空约束
ALTER TBALE stu MODIFY NAME VARCHAR(20);

约束-唯一约束
创建表时,添加唯一约束
CREATE TABLE stu1(
id int,
phone_number VARCHAR(20) UNIQUE
);
-- 注意:mysql中,唯一约束限定的列的值可以有多个null;’
-- 删除唯一约束
ALTER TABLE stu1 DROP index phone_number;
-- 在创建表后,添加唯一约束
ALTER TABLE stu1 MODIFY phone_number VARCHAR(20) UNIQUE

约束-主键约束
主键约束:primary key
注意:
含义:非空且唯一
一张表只能有一个字段为主键
主键就是表中记录的唯一表示(一般用在id)
-- 创建表时,创建主键约束 CREATE TABLE stu2( id int PRIMARY KEY, name VARCHAR(20) ); -- 删除主键 -- 错误ALTER TABLE stu2 MODIFY id int; ALTER TABLE stu2 DROP PRIMARY KEY -- 创建完表后,添加主键 ALTER TABLE stu2 MODIFY id int PRIMARY KEY


约束-主键约束-自动增长
自动增长:
1.概念:如果某一列是数值类型的,使用auto_increment 有来完成值的自动增长
一般和主键一起使用,自动增长是根据上一个id的值确定的
-- 自动增长 -- 创建表时添加主键约束,并且完成主键自整长 CREATE TABLE stu4( id int PRIMARY KEY auto_increment, name VARCHAR(20) ); -- 删除自动增长 ALTER TABLE stu4 MODIFY id int; -- 添加自动增长 ALTER TABLE stu4 MODIFY id int auto_increment -- 添加默认的自动增长值 INSERT INTO stu4 VALUES(NULL,'ccc')
约束-外键约束
外键约束:foreign key 。让表与表产生关系,从而保证数据的正确性
1.在创建表时,可以添加外键
语法:
create table 表名(
. . .
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
2.删除外键
ALTER TABLE employee DROP FOREIGN key emp_dept_fk;
ALTER TABLE 表名 DROP FPREING KEY 外键名称

3.添加外键
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FORTIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)

约束-外键约束-级联操作
级联操作:
级联更新和级联删除可以设置多个,也可以一起设置
添加级联操作:
-- 添加外键。设置级联更新。设置级联删除
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE
分类:
级联更新:
ON UPDATE CASCADE
级联删除:
ON DELETE CASCADE

可以看到这两个表已经连接起来了,如果我们想要修改department里面id的值的话,那么必须得先修改employee表里面的id值,这样很麻烦
先把employee表里面的id设置能null
UPDATE employee SET dep_id = NULL WHERE dep_id = 1

然后再设置成你想要的id值,才可以
UPDATE employee SET dep_id = 5 WHERE dep_id is NULL

有一种方法特别简单,就是级联更新
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE


级联删除



浙公网安备 33010602011771号