外键约束
-
在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)
-
在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)
-
删除外键语法: alter table 从表表名 drop foreign key 外键名称;
-
级联操作:
-
注意:
在从表中,修改关联主表中不存在的数据,是不合法的
在主表中,删除从表中已经存在的主表信息,是不合法的。直接删除主表(从表中有记录数据关联) 会包删除失败。
-
概念: 在修改或者删除主表的主键时,同时它会更新或者删除从表中的外键值,这种 动作我们称之为级联操作。
-
语法:
- 更新级联 on update cascade 级联更新 只能是创建表的时候创建级联关系。当更新主表中的主键,从表中的外键字段会同步更新。
- 删除级联 on delete cascade 级联删除 当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。
-
操作:
-- 给从表student添加级联操作 create table student( s_id int PRIMARY key , s_name VARCHAR(10) not null, s_c_id int, -- constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) CONSTRAINT stu_cour_id FOREIGN key(s_c_id) REFERENCES course(c_id) -- 给s_c_id 添加外键约束 ON UPDATE CASCADE ON DELETE CASCADE ) insert into student VALUE(1,'小孙',1),(2,'小王',2),(3,'小刘',4); insert into student VALUE(4,'小司马',1),(5,'小赵',1),(6,'小钱',1); -- 查询学生表中的记录 select * from student; -- 级联操作。 -- 更新级联 on update cascade 级联更新 只能是创建表的时候创建级联关系。当更新主表中的主键,从表中的外键字段会同步更新。 update course set c_id = 10 where c_id = 1; -- 删除级联 on delete cascade 级联删除 当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。 delete from course where c_id = 10;
-
约束总结
约束名 | 关键字 | 描述 |
---|---|---|
主键 | primary key | 唯一不为空 |
默认 | default | 插入数据,该字段没有赋值,系统会自动赋指定的默认值 |
非空 | not null | 该字段不能为null(空) |
唯一 | unique | 该字段的值在整个表中只能出现1次 |
外键 | foreign key | 从表中添加外键字段,关联主表中的主键字段 |