mysql外键查询_MySQL外键使用详解

mysql外键查询_MySQL外键使用详解最近有开始做一个实验室管理系统 因为分了几个表进行存储 所以要维护表间的关联 研究了一下 MySQL 的外键 1 只有 InnoDB 类型的表才可以使用外键 mysql 默认是 MyISAM 这种类型不支持外键约束 2 外键的好处 可以使得两张表关联 保证数据的一致性和实现一些级联操作 3 外键的作用 保持数据一致性 完整性 主要目的是控制存储在外键表中的数据 使两张表形成关联 外键只能引用外表中的列

最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键。

(1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束

(2)外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

(3)外键的作用:

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

(4)建立外键的前提:

两个表必须是InnoDB表类型。

使用在外键关系的域必须为索引型(Index)。

使用在外键关系的域必须与数据类型相似

(5)创建的步骤

指定主键关键字: foreign key(列名)

引用外键关键字: references (外键列名)

(6)事件触发限制:on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action

(7)举例

outTable表 主键 id 类型 int

创建含有外键的表:

create table temp(

id int,

name char(20),

foreign key(id) references outTable(id) on delete cascade on update cascade);

说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。

create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade on update cascade);

缺点:在对MySQL做优化的时候类似查询缓存,索引缓存之类的优化对InnoDB类型的表是不起作用的,还有在数据库整体架构中用得同步复制也是对InnoDB类型的表不生效的,像数据库中核心的表类似商品表请大家尽量不要是使用外键,如果同步肯定要同步商品库的,加上了外键也就没法通不了,优化也对它没作用,岂不得不偿失,做外键的目的在于保证数据完整性,请大家通过程序来实现这个目的而不是外键,切记!

以上所述就是本文的全部内容了,希望大家能够喜欢。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223217.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:35
下一篇 2026年3月17日 下午2:36


相关推荐

  • 安装SVN及安装语言包

    安装SVN及安装语言包首先下载 SVN 程序包 安装 SVNTortoiseS 1 10 1 28295 x64 svn 1 10 2 msi 一直单击下一步即可 安装成功后在下载语言包 https tortoisesvn net downloads html 语言包和客户端都在这里可以下载 下载成功后点击安装 找到设置页面到此安装完成 再次打开时就是中文的了

    2026年3月19日
    2
  • 常用端口号及服务

    常用端口号及服务端口号的范围是从 1 65535 分为 3 大类 1 公认端口 WellKnownPor 从 0 到 1023 它们紧密绑定于一些服务 通常这些端口的通讯明确表明了某种服务的协议 例如 80 端口实际上总是 HTTP 通讯 2 注册端口 RegisteredPo 从 1024 到 49151 它们松散地绑定于一些服务 但是这些端口同样用于许多其它目的 例如 许多系统处理动态端口从 1024 左右开始 3 动态和 或私有端口 Dynamicand orPrivatePor 从 49152 到 655

    2026年3月18日
    3
  • 怎么更改wifi频段_【wifi信号频率】wifi频率怎么设置 wifi2.4g和5g哪个更好[通俗易懂]

    怎么更改wifi频段_【wifi信号频率】wifi频率怎么设置 wifi2.4g和5g哪个更好[通俗易懂]wifi频率怎么设置1、打开浏览器,输入192.168.1.1,进入路由设置界面。2、单击左侧的设置向导,然后单击下一步。3、一般情况,选择让路由器自动选择上网方式。4、输入你从运营商那里获得上网账号、密码。5、弹出无线频段选择界面,可按自己的需求进行选择,6、然后设置无线密码即可!wifi2.4g和5g哪个更好2.4gwifi:2.4G信号频率低,在空气或障碍物中传播时衰减较小,传播距离更远。…

    2022年10月20日
    5
  • 向量积(叉积)和数量积(点积)的区别和联系之解析

    向量积(叉积)和数量积(点积)的区别和联系之解析向量积 数学中又称外积 叉积 物理中称矢积 叉乘 是一种在向量空间中向量的二元运算 与点积不同 它的运算结果是一个向量而不是一个标量 并且两个向量的叉积与这两个向量和垂直 其应用也十分广泛 通常应用于物理学光学和计算机图形学中 表示方法两个向量 a 和 b 的叉积写作 a b 有时也被写成 a b 避免和字母 x 混淆 定义向量积可以被定义为 a b a b sin a b 模长 a b

    2026年3月19日
    2
  • Oracle导入.DMP文件命令

    Oracle导入.DMP文件命令imp 导入 dmp 该命令需要在 cmd 的 dos 命令窗口直接执行 而不是 sqlplus exe full y 是导入文件中全部内容 ignore y 相当于 如果没有的表 创建并倒入数据 如果已经有的表 忽略创建的 但不忽略倒入 imp 用户 密码 file 文件路径 full yignore y

    2026年3月19日
    2
  • 深度之眼Paper带读笔记NLP.10:DCNN

    深度之眼Paper带读笔记NLP.10:DCNN文章目录前言第一课论文导读句子建模简介相关技术前期知识储备前言本课程来自深度之眼deepshare.net,部分截图来自课程视频。文章标题:AConvolutionalNeuralNetworkForModellingSentences原标题翻译:一种用于句子建模的卷积神经网络作者:NalKalchbrenner等单位:UniversityofOxford发表会议…

    2022年6月10日
    185

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号