mysql--外键(froeign key)
来源:互联网 发布:酒店数据分析百度 编辑:程序博客网 时间:2024/06/07 19:04
如果一个实体的某个字段指向另一个实体的主键,就称为外键
被指向的实体,称之为主实体(主表),也叫父实体(父表)。
负责指向的实体,称之为从实体(从表),也叫子实体(子表)
作用:
用于约束处于关系内的实体
增加子表记录时,是否有与之对应的父表记录
如果主表没有相关的记录,从表不能插入
先插入主表数据后再插入从表数据:
在删除或者更新主表记录时,从表应该如何处理相关的记录
设置级联操作:
在主表数据发生改变时,与之关联的从表数据应该如何处理
使用关键字:
on update
on delete
来标识
允许的级联动作:
cascade关联操作,如果主表被更新或删除,从表也会执行相应的操作
set null,表示从表数据不指向主表任何记录
restrict:拒绝主表的相关操作
alter table t_student add foreign key (class_id) references t_class (class_id)
on delete set null; # 在删除外键时,将从表的外键值设置为null
修改外键:
先删除这个表的外键,然后再增加
alter table tb_name drop froeign key 外键名称
外键名称在建立外键时可以自定义名称,如果不自定义,会按照mysql自动生成一个名称
show create table tb_name;
alter table t_student drop foreign key t_student_ibfk_1;
删除外键后不会对表中的数据造成任何影响,改变的只是对表的一种约束
alter table t_student add foreign key (class_id) references t_class (class_id)
on delete set null; # 在删除外键时,将从表的外键值设置为null
注:on delete 与on update 可以同时出现,
但在on delete 或on update 后不能同时出现cascade、set null、restrict,只能有一个
关于restrict的外键约束此处没有写,与其他两个一样
restrict:拒绝主表的相关操作,在主表更新或者删除数据时,在从表中存在与主表主键相关的数据,则不允许对主表数据进行更新或者删除
在不设置任何级联关系约束时,主表默认会是restrict
在restrict约束下,如果想要删除主表数据,除了可以删除没有与子表数据相关的数据外,
可以先修改子表中的外键(修改时,外键必须也要关联到主表的主键,否则不能修改成功)
也可以先删除与想要删除的主表数据的子表数据,再去删除此条主表数据
- mysql--外键(froeign key)
- mysql foreign key(外键)
- MySQL(Foreign Key)外键
- MySQL key分区(五)
- mysql primary key key
- MYSQL外键(Foreign Key)的使用(二)
- mysql 外键(foreign key)的详解和实例
- mysql 外键(foreign key)的详解和实例
- Mysql--key
- Duplicate key error in MySQL (Duplicate key name '')
- MySQL表分区(4)key分区-key
- mysql外键(foreign key)的用法
- mysql外键(foreign key)的用法
- MYSQL外键(Foreign Key)的使用
- MYSQL外键(Foreign Key)的使用
- mysql foreign key(外键) 说明与实例
- mysql foreign key(外键) 说明与实例
- MYSQL外键(Foreign Key)的使用
- t-SNE和主成分分析
- 安卓开发中的数据库技术——SQLite
- 升级HCA卡的firmware
- Python 2.7 中的pandas 中的read_excel
- redis的五种数据结构
- mysql--外键(froeign key)
- php开发一个守护进程
- 管理工具和java操作redis
- unity手动拖拽播放视频的bug小结
- 2017ACM省赛总结
- LMAX简介
- 3.行为型模式
- 永坤电机SEO三天两夜课程学习总结
- java JDBC 通过物理连接数据库和通过获取数据库连接池进行链接