36.MYSQL的外键(foreign key)

外键(Foreign Key)是关系数据库中的一种约束,用于建立表与表之间的关联关系。外键定义了两个表之间的从属关系,它指向另一个表中的主键,用于维护数据的完整性和一致性。

外键分为两个角色:主表和从表。主表是被引用的表,它的主键列被其他表的外键引用;从表是引用其他表的表,它包含外键列,该列对应主表的主键列。

外键的作用主要有以下几个方面:

  1. 维护数据的完整性:外键约束可以保证数据的完整性,确保从表中的外键值必须存在于主表的主键列中,避免出现孤立的数据。

  2. 建立表与表之间的关联关系:通过外键,可以建立起表与表之间的关联关系,使得数据之间可以进行引用和查询。

  3. 实现数据的一致性和约束:外键约束可以限制对主表的修改操作,确保数据的一致性,防止出现不符合业务规则的数据。

  4. 支持数据的级联操作:外键还可以实现级联删除和更新操作,例如设置外键约束时指定级联删除,当主表中的某条记录被删除时,从表中对应的相关记录也会被自动删除。

需要注意的是,外键约束的使用需要谨慎,合理设计外键关系可以提高数据的一致性和完整性,但过多的外键关系可能会影响数据库的性能。在设计数据库时,需要根据实际情况和业务需求来确定是否使用外键。

外键是从表中的一个字段。这个字段的类型和长度应该与被引用表中的主键相同。它的作用是引用主表中的主键,建立起主表和从表之间的联系。

在建立外键关系时,需要在从表中创建一个外键字段,并将其设置为对应主表的主键。这个外键字段在逻辑上连接了两个表,允许从表中的记录引用主表中的记录,从而实现两个表之间的关联查询和数据完整性维护。

需要注意的是,外键字段必须满足以下条件:

1.外键字段的值必须存在于被引用表的主键字段中,否则将会出现引用错误。

2.被引用表的主键字段必须具有唯一性,否则也会出现引用错误。

因此,在设计数据库时需要合理选择主键和外键的类型、长度和关系,以保证数据的完整性和正确性。

总结来说就是:

外键是从表的一个字段,然后该字段引用其他表的主键或者唯一约束字段上。

—该外键字段的值必须是引用字段已存在的值。

—外键字段类型和引用字段类型和长度要相同。

—外键的表(从表)删除后,引用字段的表(主表)才能删(或者把外键删除)。

—外键的值可以修改,但是必须是引用字段已存在的值。

—被外键引用的值,主表不能把值的该行删除,没有引用的值那行可以删除。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VirtualBox虚拟机使用USB3.0网卡与开发板通信

因为我的笔记本没有带网口,所以我使用的是USB网卡。我按照网上其他人发的“VirtualBox与开发板、主机相互ping通”文章中提到的方法,进行网络设置后发现仍然无法实现Ubuntu虚拟机与主机和Linux开发板相互ping通。 仔细回想以前Ubuntu虚拟机使用USB读卡器…

用户表格及筛选表单配置 - PC通用管理模块(1)

用户表格及筛选表单配置 - PC通用管理模块(1) 多八多AiIDE - 用户管理页面配置教程 第一课:基础查询配置 目标 配置基础的PC端通用管理模块。添加前端自定义组件以显示管理页面。配置列表表格字段。配置筛选表单。 步骤 1. 注册和新建应用 访问多八多AiIDE平台…

Docker - 镜像 | 容器 日常开发常用指令 + 演示(一文通关)

目录 Docker 开发常用指令汇总 辅助命令 docker version docker info docker --help 镜像命令 查看镜像信息 下载镜像 搜索镜像 删除镜像 容器命令 查看运行中的容器 运行容器 停止、启动、重启、暂停、恢复容器 杀死容器 删除容器 查看容器日志 进入容器内部…

SpringSecurity【3】之授权

继续昨天的认证,今天来分析 在Spring Security中,授权是指对用户访问系统资源的限制。Spring Security提供了多种授权方式,包括基于角色的授权、基于表达式的授权、注解授权等。 基于角色的授权是指通过为用户分配不同的角色来限制其访问系统…

四、UART_阻塞发送中断接收

1、开发环境 (1)Keil MDK: V5.38.0.0 (2)MCU: mm320163D7P 2、实验目的&原理图 2.1、实验目的 (1)上位机串口助手给MCU发送信息,MCU串口通过通过串口助手接收后,将接收到的内容通过串口助手发送到上位机。 (2)串口在whil循环中每隔1秒发送一次…

Java中如何优雅地根治null值引起的Bug问题

1. Java对象为null会引发的问题 NullPointerException:当你尝试调用或访问一个null对象的属性或方法时,Java会抛出NullPointerException异常。例如,如果你有一个名为person的变量,它被设置为null,然后你尝试调用perso…

【大语言模型】Transformer原理以及运行机制

目录 参考资料 Transformer 是一种序列到序列(Sequence-to-Sequence)的模型,用于处理自然语言处理任务。它是由谷歌公司提出的一种基于注意力机制的神经网络模型,被广泛应用于机器翻译、问答系统、文本摘要、对话生成等任务。 T…

蓝桥杯2020年5月青少组Python程序设计国赛真题

1、 上边是一个算法流程图,最后输出的b的值是() A.377 B.987 C.1597 D.2584 2、 3、如果整个整数X本身是完全平方数,同时它的每一位数字也都是完全平方数我们就称X 是完美平方数。前几个完美平方数是0、1、4、9、49、100、144......即第1个完美平方数是0,第2个是 1,第3个…

Hadoop入门学习笔记——一、VMware准备Linux虚拟机

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.…

连续执行函数和alert与focus死循环事件

1.innerText value的值会根据输入的改变而改变DOM树,但是innerHTML和innerText有一种效果就是赋值的时候是标签下所有替代了,但是取值的时候还是html文件下,标签下的所有。如果赋值就是标签子都被这个代替。内部变量就是这个,没赋…

WEB 3D技术 three.js 通过lil-gui 控制x y z轴数值 操作分组 设置布尔值控制 颜色材质控制

上文 WEB 3D技术 three.js 通过lil-gui管理公共事件中 我们用 lil-gui 处理了一下基础事件和按钮的管理 那么 本文 我们来具体说说它能做的其他事 我们先将基础代码改成这样 import ./style.css import * as THREE from "three"; //引入lil-gui import { GUI } fro…

安装Kubernetes1.23、kubesphere3.4、若依项目自动打包部署到K8S记录

1.安装kubernetes1.23详细教程 kubernetes(k8s)集群超级详细超全安装部署手册 - 知乎 2.安装rancher动态存储 kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml3.安装kubesphere3.4 准备工作 您…

UE和Android互相调用

ue和android互调 这两种方式都是在UE打包的Android工程之上进行的。 一、首先是UE打包Android,勾选下面这项 如果有多个场景需要添加场景 工程文件在这个路径下 然后可以通过Android Studio打开,选择gradle打开 先运行一下,看看是否可以发布…

360勒索病毒:了解最新变种.360,以及如何保护您的数据

导言: 随着科技的飞速发展,网络安全威胁也在不断演变,.360 勒索病毒成为近期备受关注的一种恶意软件。本文91数据恢复将介绍如何恢复被.360 勒索病毒加密的数据文件,并提供一些建议,帮助你预防这种威胁。 如果您在面对…

032 - STM32学习笔记 - TIM基本定时器(一) - 定时器基本知识

032 - STM32学习笔记 - TIM定时器(一) - 基本定时器知识 这节开始学习一下TIM定时器功能,从字面意思上理解,定时器的基本功能就是用来定时,与定时器相结合,可以实现一些周期性的数据发送、采集等功能&#…

DMR与DPMR以及DMR的分层

数字移动无线电 (DMR) 和数字专用移动无线电 (dPMR) 是数字对讲机中使用的流行通信技术。 与传统模拟无线电相比,这两种技术都提供了改进的音频质量、增强的安全功能和增加的网络容量。 但是,DMR 和 dPMR 无线电之间使用的技术存在重大差异&#xff…

阿里云公有云平台

1. 请简要介绍一下公有云平台的基本概念和特点。 公有云是一种云计算模型,其中服务器、网络和存储资源等IT基础架构以虚拟资源的形式提供,并且可以通过互联网进行访问。这些资源是由第三方提供商共享并提供给用户的,包括计算、存储、网络等。…

并发和并行的区别

并发(Concurrency)和并行(Parallelism)是计算机领域中两个重要的概念,它们描述了任务执行的不同方式。以下是它们的区别: 并发:并发是指多个任务在同一时间段内交替执行。虽然这些任务可能同时存…

2023年12月GESP Python五级编程题真题解析

【五级编程题1】 【试题名称】:小杨的幸运数 【问题描述】 小杨认为,所有大于等于a的完全平方数都是他的超级幸运数。 小杨还认为,所有超级幸运数的倍数都是他的幸运数。自然地,小杨的所有超级幸运数也都是幸运数。 对于一个…

MongoDB安装部署

二、安装部署 2.1 下载 下载地址:MongoDB Enterprise Server Download | MongoDB 当前最新版本6.0.9,5.0.9对Mac m1需要centos 8.2版本。选择docker安装。 2.2 docker-ce安装 # 安装docker # 默认repo源没有docker-ce安装包,需要新的rep…