Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
sql中如何设置外键关系 外键关系设置技巧快速掌握_创想鸟

sql中如何设置外键关系 外键关系设置技巧快速掌握

外键关系是通过从表字段关联主表主键来确保数据完整性与一致性的机制。其设置技巧包括:1.明确主表(如customers)与从表(如orders)关系,从表字段引用主表主键;2.设计表结构时确保从表外键字段与主表主键类型一致;3.使用alter table语句创建外键约束并定义名称、字段与引用关系;4.配置on delete与on update规则,如cascade、set null、set default、restrict等,以控制主表数据变更时的从表行为;5.统一命名规范,推荐采用fk_从表名_主表名格式提升可维护性;6.在外键字段建立索引优化查询性能并避免大规模级联操作影响效率;7.根据场景权衡使用外键,适用于需防孤儿数据及高数据一致性需求的情况,而不适用于高性能要求、大数据量或微服务架构降低耦合的场景。

sql中如何设置外键关系 外键关系设置技巧快速掌握

外键关系,简单来说,就是一张表里的某个字段,指向另一张表的主键。这样做的目的是为了保证数据的完整性和一致性,避免出现“孤儿数据”。

sql中如何设置外键关系 外键关系设置技巧快速掌握

外键关系设置技巧快速掌握:

sql中如何设置外键关系 外键关系设置技巧快速掌握

解决方案

确定主表和从表: 搞清楚哪张表是“主表”(拥有主键的表),哪张表是“从表”(需要引用主表主键的表)。比如,customers 表是主表,orders 表是从表,orders 表的 customer_id 字段引用 customers 表的 id 字段。

sql中如何设置外键关系 外键关系设置技巧快速掌握

设计表结构: 在从表中,添加一个与主表主键类型一致的字段。这个字段就是外键。

创建外键约束: 使用 ALTER TABLE 语句添加外键约束。语法如下:

ALTER TABLE 从表ADD CONSTRAINT 外键名称FOREIGN KEY (从表外键字段)REFERENCES 主表(主表主键字段);

例如:

ALTER TABLE ordersADD CONSTRAINT FK_orders_customersFOREIGN KEY (customer_id)REFERENCES customers(id);

FK_orders_customers:外键约束的名称,可以自定义。customer_idorders 表中的外键字段。customers(id)customers 表的 id 字段,也就是主键。

设置 ON DELETE 和 ON UPDATE 规则(非常重要): 这两个规则决定了当主表中的数据被删除或更新时,从表中的数据应该如何处理。常见的规则有:

CASCADE:级联删除/更新。主表数据被删除/更新,从表中关联的数据也跟着删除/更新。谨慎使用,容易造成数据丢失SET NULL:设置为空。主表数据被删除/更新,从表中关联的外键字段设置为 NULL。要求外键字段允许为 NULL。SET DEFAULT:设置为默认值。主表数据被删除/更新,从表中关联的外键字段设置为默认值。要求外键字段有默认值。RESTRICT (或 NO ACTION):限制删除/更新。如果从表中存在关联数据,则不允许删除/更新主表数据。这是最安全的选择,也是默认行为。

例如:

ALTER TABLE ordersADD CONSTRAINT FK_orders_customersFOREIGN KEY (customer_id)REFERENCES customers(id)ON DELETE RESTRICTON UPDATE CASCADE;

这里设置了:当 customers 表中的 id 被删除时,如果 orders 表中存在关联的 customer_id,则不允许删除;当 customers 表中的 id 被更新时,orders 表中关联的 customer_id 也跟着更新。

关于数据类型: 务必确保主表的主键和从表的外键数据类型完全一致。不然会报错,而且就算侥幸没报错,也可能埋下数据不一致的隐患。

一键抠图 一键抠图

在线一键抠图换背景

一键抠图 30 查看详情 一键抠图

外键命名规范:如何让你的数据库更易维护?

好的命名规范能提高代码可读性和可维护性。外键命名也一样。通常建议采用 FK_从表名_主表名 的格式。例如,FK_orders_customers。这样一看就知道这个外键是 orders 表引用 customers 表的。

如果一个表有多个外键,可以加上更详细的描述,比如 FK_orders_shipping_addressFK_orders_billing_address

外键约束的性能影响:如何优化你的SQL查询?

外键约束会增加数据库的维护成本,因为每次增删改操作都需要检查外键约束。但这通常不是性能瓶颈。真正影响性能的是没有正确使用索引。

确保在外键字段上创建索引。索引可以加速查询,特别是涉及到连接查询的时候。

CREATE INDEX IX_customer_id ON orders(customer_id);

另外,避免在大型表上使用 CASCADE 规则,因为它可能会导致大量的级联操作,影响性能。

何时应该使用外键,何时不应该使用?

外键是为了保证数据完整性,但有时候过度使用外键反而会适得其反。

应该使用外键的情况:

需要保证数据一致性。需要防止“孤儿数据”。业务逻辑对数据完整性要求很高。

不应该使用外键的情况:

性能要求非常高,可以牺牲部分数据完整性。数据量非常大,外键约束会成为性能瓶颈。微服务架构下,不同服务之间的数据耦合度应该尽量降低。

在微服务架构下,服务之间的数据通常通过消息队列或API同步,而不是直接使用外键。因为跨服务的外键约束会增加服务的耦合度,降低系统的灵活性。

总之,外键是一个强大的工具,但要根据实际情况谨慎使用。

以上就是sql中如何设置外键关系 外键关系设置技巧快速掌握的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/602220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
官博翻译 | .NET Core 即 .NET 的未来
上一篇 2025年11月10日 21:04:10
iOS 18beta7评测_iOS 18beta7升级方法!
下一篇 2025年11月10日 21:04:25

相关推荐

  • 锚定AI终端存储市场,康盈半导体连发三款新品

    锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 三款新品聚焦AI存储需求 在最新举行的产品发布会上,康盈半导体正式推出三款专为AI应用场景打造的全新存储解决方案,覆盖嵌入式存储与高性能固态硬盘等多个品类,旨在满足多样化AI终端对高效、紧凑、低…

    2026年9月21日 用户投稿
    000
  • linux内核定时器实验

    linux内核定时器实验linux内核定时器实验linux内核定时器实验linux内核定时器实验

    大家好,又见面了,我是你们的朋友全栈君。 文章目录一、linux时间管理和内核定时器简介1.内核时间管理简介2.内核定时器简介1.init_timer 函数2.add_timer 函数3.del_timer 函数4.del_timer_sync 函数5.mod_timer 函数3.linux内核短延…

    2026年9月21日 用户投稿
    000
  • MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    mysql日志审计是合规性的基石,因为它提供了数据库操作的完整证据链,记录用户身份、操作类型和时间戳等关键信息,满足gdpr、hipaa等法规要求,并支持事后追溯与事前震慑。1. mysql自身提供错误日志、通用查询日志、慢查询日志和二进制日志,其中通用查询日志记录所有sql语句,二进制日志用于数据…

    2026年9月21日 用户投稿
    000
  • WordPress插件定制:使用Filter Hook修改邮件通知接收者

    本教程将指导您如何在WordPress中利用Filter Hook定制插件行为,特别是修改第三方插件的邮件通知接收者。我们将详细讲解如何识别目标Filter、理解其参数,并正确编写回调函数来拦截或修改数据,以实现自定义的邮件发送逻辑,避免因参数不匹配导致的错误。 WordPress Hook机制概览…

    2026年9月21日
    100
  • Java Collections.singletonList如何创建单元素集合

    Collections.singletonList(T item) 返回只含一个元素的不可变列表,传入指定对象后生成轻量级只读集合,适用于需高效传递单元素场景。该列表禁止修改操作,否则抛出异常,允许 null 元素,内部优化减少内存开销,常用于 API 参数传递或流处理中的临时数据构造。 Java …

    2026年9月21日
    100
  • win8怎么更改锁屏壁纸_Win8锁屏壁纸修改方法

    首先通过电脑设置更换锁屏壁纸,进入“锁屏界面”选择图片或浏览自定义图片;其次可通过控制面板跳转至电脑设置完成相同操作;最后可启用幻灯片放映功能,添加文件夹实现锁屏背景自动轮换。 如果您希望个性化您的Windows 8设备,更改锁屏壁纸是一个简单而有效的方式。系统提供了多种途径来替换默认的锁屏背景图片…

    2026年9月21日
    100
  • JavaScript中的模块联邦如何实现微前端的代码共享?

    模块联邦通过运行时动态加载实现微前端代码共享,无需打包公共依赖。使用 ModuleFederationPlugin 配置 name、remotes、exposes 和 shared,使应用可暴露或引入远程模块,支持组件、工具函数及状态管理共享,提升复用性并减少冗余。 模块联邦通过在构建时让不同应用直…

    2026年9月21日
    200
  • 如何系统学习蝴蝶号无人直播运营的核心知识

    如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识

    要系统学习蝴蝶号无人直播运营的核心知识,首先要理解平台逻辑、制定精细化内容策略、掌握自动化技术并持续进行数据分析与风险控制。具体包括:一是深入研究平台算法和规则边界,确保操作合规;二是构建高质量、多样化且合规的内容素材库,并进行标签化管理;三是选择安全可靠的自动化工具,避免使用违规软件;四是模拟真人…

    2026年9月21日 用户投稿
    300
  • Swoole如何实现一个UDP服务器

    答案:使用Swoole可轻松创建高性能UDP服务器。通过new SwooleServer()设置UDP套接字,监听Packet事件接收数据,利用sendto()回复客户端;结合set()配置worker_num等参数优化性能,配合PHP UDP客户端测试通信,适用于高并发、低延迟场景。 使用Swoo…

    2026年9月21日
    100
  • MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    在 mysql 查询优化中,执行计划的 extra 字段用于说明查询执行时的额外操作,常见的值包括:1. using filesort 表示需要额外排序,应尽量通过建立索引避免;2. using temporary 表示使用了临时表,常见于 group by 或复杂 join,需优化减少其使用;3.…

    2026年9月21日 用户投稿
    100
  • OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”

    OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”

    10月13日,oppo正式宣布将发布哈苏专业影像套装,涵盖哈苏专业增距镜、全新磁吸手柄、磁吸保护壳以及专业手机肩带等配件。该套装被官方誉为“口袋里的完整版哈苏”,主打“追星无需携带相机”的理念,将于10月16日随find x9系列一同亮相,并专为find x9 pro机型优化适配。 图片来源@OPP…

    2026年9月21日 用户投稿
    100
  • 如何通过tracert命令追踪数据包从本地到目标服务器的完整路径?

    打开命令提示符,输入cmd并回车;2. 执行tracert 目标地址命令追踪路径;3. 查看每跳响应时间与IP,分析延迟变化定位网络瓶颈;4. 注意部分节点可能因防火墙不响应导致超时。 使用 tracert(Windows 系统)命令可以追踪数据包从你的计算机到目标服务器所经过的每一跳网络节点,帮助…

    2026年9月21日
    1000
  • 如何在Java中理解Java I/O与NIO机制

    传统I/O是阻塞式流模型,适用于低并发场景;NIO基于缓冲区与通道,支持非阻塞和多路复用,适合高并发网络应用,核心区别在于线程模型与资源利用率。 Java中的I/O(输入/输出)与NIO(New I/O)是处理数据读写的核心机制,理解它们的区别和使用场景对开发高性能应用至关重要。传统I/O基于流模型…

    2026年9月21日
    100
  • UC浏览器网页上的文字无法选中复制怎么办 UC浏览器解决网页文字禁止复制问题

    答案:可通过开发者工具、阅读模式、打印预览、OCR识别或自定义脚本解除UC浏览器网页复制限制。具体操作依次为:开启开发者工具并执行JavaScript代码解除限制;启用阅读模式净化页面内容;使用打印预览重新渲染页面以选中文字;对截图应用OCR技术提取文本;添加书签脚本自动移除禁用选择的代码,从而实现…

    2026年9月21日
    100
  • JavaScript中的尾调用优化(TCO)在ES6中如何工作?

    尾调用是指函数的最后一个动作调用另一个函数,ES6引入尾调用优化以重用栈帧、避免内存溢出,支持真正的尾递归,如阶乘函数通过累积参数实现。 尾调用优化(Tail Call Optimization, TCO)是ES6引入的一项语言特性,目的是在特定条件下重用函数调用栈帧,避免不必要的内存增长,从而支持…

    2026年9月21日
    200
  • MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    分库分表设计需注意分片键选择、分片数量控制、避免跨库查询及完善运维体系。一,优先选择高频查询字段作为分片键,如用户id,避免使用时间戳以防写热点;二,初期合理分片(如4~8库,每库4~8表),预留扩容空间并根据数据总量反推分片数;三,尽量避免跨库查询,可通过冗余数据、异步汇总或强制路由优化;四,配套…

    2026年9月21日 用户投稿
    100
  • 抖音蝴蝶号无人直播带货操作流程及注意事项

    抖音蝴蝶号无人直播带货操作流程及注意事项抖音蝴蝶号无人直播带货操作流程及注意事项抖音蝴蝶号无人直播带货操作流程及注意事项抖音蝴蝶号无人直播带货操作流程及注意事项

    “抖音蝴蝶号无人直播带货”是一种通过自动化或半自动化技术实现的直播销售模式。①其核心在于摆脱真人主播限制,实现24小时不间断直播,提升效率与流量利用率;②关键步骤包括明确账号定位与商品选择、准备高质量且丰富的内容素材、利用虚拟人或预录内容实现直播推流、结合智能客服模拟评论区互动;③优势在于降低人力成…

    2026年9月21日 用户投稿
    600
  • VSCode侧边栏怎么去掉_VSCode侧边栏隐藏教程

    隐藏VSCode侧边栏可通过Ctrl + B(Windows/Linux)或Cmd + B(macOS)快捷键快速切换,也可通过菜单栏“视图 > 外观 > 切换侧边栏可见性”或命令面板执行“View: Toggle Sidebar Visibility”实现。推荐使用快捷键操作,效率最高…

    2026年9月21日
    100
  • win10连接打印机错误0x00000709怎么办_win10打印机连接错误修复方法

    错误代码0x00000709通常因权限不足、系统更新冲突或服务异常导致共享打印机连接失败。可使用专业工具一键修复,或通过修改注册表权限、卸载KB5005569等特定更新、重启Print Spooler及相关服务,以及添加Windows凭据(如IP地址和guest账户)解决该问题。 当您在Window…

    2026年9月21日
    200
  • MobileCLIP2— 苹果开源的端侧多模态模型

    MobileCLIP2— 苹果开源的端侧多模态模型MobileCLIP2— 苹果开源的端侧多模态模型MobileCLIP2— 苹果开源的端侧多模态模型MobileCLIP2— 苹果开源的端侧多模态模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 可图大模型 可图大模型(Kolors)是快手大模型团队自研打造的文生图AI大模型 32 查看详情 MobileCLIP2是什么 mobileclip2是由苹果研究团队开发的新一代高效多模态模型,…

    2026年9月21日 用户投稿
    200

发表回复

登录后才能评论
关注微信