视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
新手SQLServer数据库dba需要注意的小细节 格力空调怎么加氟 怎么加空调氟 空调除湿原理是啥 松下空调怎么加氟 春兰空调故障代码e4 空调一小时几度电 格力空调加氟方法 LG空调怎么加氟 格兰仕空调故障代码e4 空调一小时用多少电 日立空调怎么加氟 格兰仕空调故障代码cf 空调每小时耗电量 海信空调怎么加氟 空调一个小时几度电 海尔空调怎么加氟 富士通空调怎么加氟 空调一晚上几度电 格兰仕空调e7故障代码 春兰空调故障代码e2 中央空调显示e6是什么意思 志高空调怎么加氟 志高空调压缩机不启动 空调显示e6不制冷 美的空调怎么加氟 澳柯玛空调压缩机不启动 空调e6怎么解决 tcl空调显示e6 奥克斯空调压缩机不启动 山寨技术下的网站图片服务器(NGINX) 浏览器AdobeFlashPlayer插件去除沙箱(保护模式)特性增强稳定 新手学堂最常用Oracle命令集锦 新手知识选择正确的MySQL安装包 新手学堂MySQL数据库多表删除方法 新手学堂Linux下Oracle的自动启动及停止 新手进阶查看MySQL表结构命令 新手进阶Python连接MySQL代码 格力中央空调故障代码e1 大金中央空调内机漏水
新手学习MySQL外键所要知道的知识
2020-11-09 14:21:16 责编:小采
文档

我们今天是要和大家一起讨论的是新手学习MySQL外键所要知道的知识,我前两天在相关网站看见新手学习MySQL外键所要知道的相关知识的资料,觉得挺好,今天拿就出来供大家分享。 本文详细介绍MySQL外键:数据库新手入门之MySQL中如何定义外键 定义数据表 假如某

我们今天是要和大家一起讨论的是新手学习MySQL外键所要知道的知识,我前两天在相关网站看见新手学习MySQL外键所要知道的相关知识的资料,觉得挺好,今天拿就出来供大家分享。

本文详细介绍MySQL外键:数据库新手入门之MySQL中如何定义外键

定义数据表

假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。

在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;

在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。

很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)——Pc表中的CPU型号受到Parts 表中型号的约束。

首先我们来创建 parts 表:

  1. CREATE TABLE parts (
  2. ... 字段定义 ...,
  3. model VARCHAR(20) NOT NULL,
  4. ... 字段定义 ...
  5. );
  6. 接下来是Pc表:
  7. CREATE TABLE pc (
  8. ... 字段定义 ...,
  9. cpumodel VARCHAR(20) NOT NULL,
  10. ... 字段定义 ...
  11. };

设置索引

若要设置MySQL外键,在参照表(referencing table,即Pc表) 和被参照表 (referenced table,即parts表) 中,相对应的两个字段必须都设置索引(index)。

对Parts表:

  1. ALTER TABLE parts ADD INDEX idx_model (model);

这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。

对Pc表也类似:

  1. ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。

定义外键

下面为两张表之间建立前面所述的那种“约束”。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将Pc表的cpumodel字段设置为“外键”(FOREIGN KEY),即这个键的参照值来自于其他表。

  1. ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
  2. FOREIGN KEY (cpumodel)
  3. REFERENCES parts(model);

第一行是说要为Pc表设置MySQL外键,给这个外键起一个名字叫做fk_cpu_model;第二行是说将本表的cpumodel字段设置为外键;第三行是说这个外键受到的约束来自于Parts表的model字段。

这样,我们的外键就可以了。如果我们试着CREATE一台Pc,它所使用的CPU的型号是Parts表中不存在的,那么MySQL会禁止这台PC被CREATE出来。

级联操作

考虑以下这种情况:

技术人员发现,一个月之前输入到 parts 表中的某个系列的 cpu (可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当 parts 表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。

可以在定义MySQL外键的时候,在最后加入这样的关键字:

ON UPDATE CASCADE; 即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。:)

如果把这语句完整的写出来,就是:

  1. ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
  2. FOREIGN KEY (cpumodel)
  3. REFERENCES parts(model)
  4. ON UPDATE CASCADE;

除了 CASCADE 外,还有 RESTRICT(禁止主表变更)、SET NULL(子表相应字段设置为空)等操作。

延伸阅读

外键(Foreign Key)

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

下载本文
显示全文
专题格力空调怎么加氟格力空调怎么加氟专题怎么加空调氟怎么加空调氟专题空调除湿原理是啥空调除湿原理是啥专题松下空调怎么加氟松下空调怎么加氟专题春兰空调故障代码e4春兰空调故障代码e4专题空调一小时几度电空调一小时几度电专题格力空调加氟方法格力空调加氟方法专题LG空调怎么加氟LG空调怎么加氟专题格兰仕空调故障代码e4格兰仕空调故障代码e4专题空调一小时用多少电空调一小时用多少电专题日立空调怎么加氟日立空调怎么加氟专题格兰仕空调故障代码cf格兰仕空调故障代码cf专题空调每小时耗电量空调每小时耗电量专题海信空调怎么加氟海信空调怎么加氟专题空调一个小时几度电空调一个小时几度电专题海尔空调怎么加氟海尔空调怎么加氟专题富士通空调怎么加氟富士通空调怎么加氟专题空调一晚上几度电空调一晚上几度电专题格兰仕空调e7故障代码格兰仕空调e7故障代码专题格兰仕空调怎么加氟格兰仕空调怎么加氟专题伊莱克斯空调怎么加氟伊莱克斯空调怎么加氟专题海尔空调加氟方法海尔空调加氟方法专题空调一天用多少电空调一天用多少电专题三洋空调怎么加氟三洋空调怎么加氟专题空调耗电量如何计算空调耗电量如何计算专题长虹空调故障代码f6长虹空调故障代码f6专题开利空调怎么加氟开利空调怎么加氟专题空调1匹多少平方空调1匹多少平方专题春兰空调怎么加氟春兰空调怎么加氟专题三菱空调怎么加氟三菱空调怎么加氟专题用mysql创建一个学生表专题mysql建立一个学生表专题mysql分表案例专题mysql数据库sql练习专题mysql大数据课程专题简述mysql的特点专题数据库mysql练习专题mysql练习数据专题mysql 水平分表专题mysql 练习数据库专题mysql 练习数据专题mysql课程表创建专题mysql练习表专题mysql建表练习专题mysql数据库基础教学专题课程表mysql专题mysql课程表专题mysql数据库难学吗专题mysql要学到什么程度专题mysql数据库基本知识点总结专题