2019独角兽企业重金招聘Python工程师标准>>>

前提:使用外键功能,存储引擎需为InnoDb类型;

一、建表时同时创建外键

1、情景,班级表 和 学生表,一对多的关系。

2、班级表称A主表,学生表称B从表,当B表中有个字段使用了A表主键作为字段内容,此字段称为外键;

3、首先创建班级表,A表

4、创建学生表,B表,使用A表的id作为其外键

注:1、外键字段自动添加了索引

2、在没有明确指定约束名时,会自动分配 一个约束名

5、为什么说外键是约束

在默认的严格模式下:

从表中外键字段不能使用主表中不存在的主键ID

如果从表使用了主表字段中的数据后,主表这些记录将无法删除

二、删除外键

语法:alter table 从表名称  drop foreign key 外键的约束名(上面的约束名为 studentinfo_ibfk_1)

注:删除外键后,原外键的索引会保留。

三、手工添加外键

格式:alter table 从表名 add foreign key (从表中字段名称)  references 主表名 (主表的主键字段名)

四、外键字段的联动操作

上面看到,从表外键字段使用了主表的id,在主表中该id记录删除不了,实际并不一定不能删除

外键约束分3种情况:

         stric,严格模式,默认的方式,不允许修改和删除

         cascade,级联,主表修改或删除,从表跟着变化

         set null,设置为null,主表数据删除,从表外键字段变为null

         

比较合理的方式是:

         on update cascade

         on  delete set null

我们在定义外键时,不一定非要用严格模式,可以根据需求,修改或删除采用 级联 或 set null

注:如果外键字段在删除时使用的是set null 方式,一定要看一下外键字段是否是not null,如果是,要修改为允许为null

  也可只设置一个 on update casade;只修改生效,不能删除啦

例:操作演示,修改主键,从表主键自动被修改。

操作演示:删除主表ID

转载于:https://my.oschina.net/selly1025/blog/666973

Mysql外键约束foreign key相关推荐

  1. MySQL外键约束-foreign key

    一.什么是外键 外键也称之为外键约束 :  关键字  foreign key 外键:外面的键,一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键. 外键所在的表称之为子表(附表) ...

  2. 外键约束(foreign key) [MySQL][数据库]

    外键约束(FOREIGN KEY(字段) REFERENCES 主表名(字段)) 外键约束的作用: 限定某个字段的引用完整性 我们之前在讲数据完整性的时候就提到过引用完整性 引用完整性(eg: 员工所 ...

  3. SQL约束(主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)

    注意: A.表中有数据不能创建约束 B.视图下设置后,要点击保存(只有保存后在才看的到) c   别忘了,点刷新,才会出来呀! 1.主键约束 primary key 主键是每行的唯一标识符,仅仅通过它 ...

  4. mysql外键约束cascade_mysql外键约束foreign key ON DELETE CASCADE ON UPDATE CASCADE

    正 文: 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强.关于完整 ...

  5. mysql外键(FOREIGN KEY)简单讲解与演示

    前言 上数据库遇到了个叫外键的东西,一开始不是很懂,后来懂了,故记录一下... 外键是什么 外键,即外部的键 ,用来保证数据一致性,那么什么是数据的一致性呢? 假设某带学有如下两张表,描述,学生和专业 ...

  6. mysql 外键(foreign key)的详解和实例

    一.基本概念 1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用 ...

  7. mysql 外键约束_MySQL之外键约束(FOREIGN KEY)

    定义: MySQL外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列.一个表可以有一个或多个外键. 外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每 ...

  8. mysql外键约束怎么写_mysql外键约束怎么写

    mysql外键约束的写法:[[CONSTRAINT ] FOREIGN KEY 字段名 REFERENCES 主键列1].外键约束是表的一个特殊字段,经常与主键约束一起使用. 在 CREATE TAB ...

  9. mysql外键名_MySQL外键(foreign key)使用及说明详解

    外键也称之为外键约束: foreign key 外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键. 外键所在的表称之为子表(附表); 外键所指向的主键所在的 ...

最新文章

  1. Android 动态生成 EditTest
  2. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法
  3. 第16讲:ODBCJDBC简介
  4. 软件工程综合实践专题第三次个人博客作业
  5. 《海龟交易法则》经典梳理
  6. leetcode解题记录(二)
  7. linux 下的前端编程工具,Prepros Linux版(前端开发工具)
  8. apache 网址重定向
  9. Python打字练习程序
  10. 做正确的事(效果)比正确的做事(效率)更重要
  11. KendoGrid的使用
  12. kafka学习七:kafka之集群篇
  13. AI算法之Encoder-Decoder 和 Seq2Seq
  14. 热电偶 matlab,基于MATLAB的陶瓷窑炉温度与热电偶热电势关系的数学模型研究
  15. linux运维(九)
  16. 创建数据表与修改数据表
  17. Quantopian自学笔记02
  18. Appium WebView 技术原理
  19. mysql 索引类型 mul_mysql的四种索引类型
  20. linux+gedit+编辑文件,GEDIT + GMATE = 实用的编辑器

热门文章

  1. Object.create()和new object()和{}的区别
  2. Andriod Studio两种签名机制V1和V2的区别
  3. python线程安全队列用法
  4. go依赖管理-govendor
  5. 一个两年Java的面试总结
  6. Vue2.0+ElementUI+PageHelper实现的表格分页
  7. [转] FFmpeg常用基本命令
  8. 第一个Sprint冲刺成果
  9. 适合Web服务器的iptables规则
  10. es 中关于 term,match, text, keyword