MYSQL数据库进阶多表查询,MYSQL数据库主键和外键

news2024/9/27 17:22:18

目录

  • 友情提醒
  • 第一章:MYSQL数据库多表主键和外键
    • 1)外键介绍(FOREIGN KEY)
    • 2)外键约束作用
    • 2)三种情况下添加外键约束
      • ①一对一关系
      • ②一对多关系
      • 多对多关系
    • 4)删除外键约束
  • 第二章:MYSQL数据库多表查询
    • 1)内连接,外连接等
    • 2)关联子查询

友情提醒

先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。

第一章:MYSQL数据库多表主键和外键

1)外键介绍(FOREIGN KEY)

①外键是表格中的特殊字段但不是主键,外键用来建立主表与从表的关联关系,添加了外键的表我们称为从表,被引用主键的表我们称为主表。默认情况下主表和从表是相互约束的关系。
②外键约束的作用:避免多表中垃圾数据的产生,约束两个表中数据的一致性和完整性。
图片来自:http://cd.itheima.com/news/20220810/170702.html
在这里插入图片描述

③一个表可以有一个或多个外键,必须为主表定义主键,主表中的主键不能包含空值,但是外键可以是空值,如果不是空值,则每个外键的值必须等于主表中主键的某个值。
举例:每个外键的值必须等于主表中主键的某个值
主键的id字段数据是1,这时候从表的外键字段可以是1,如果想添加tid=2会报错。
在这里插入图片描述

tid不能值=2,因为外键的值必须等于主表中主键的某个值:
在这里插入图片描述

④父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
⑤写SQL语句时,需要在父表的表名后面指定列名或列名的组合。这个列或列的组合必须是父表的主键或候选键。
外键中列的数目和数据类型必须和主表的主键中的相同。

2)外键约束作用

第一种:阻止执行
①从表插入新行,其外键值不是主表的主键值便阻止插入;
②从表修改外键值,新值不是主表的主键值便阻止修改;
③主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行);
④主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

第二种:级联操作
在外键约束中,主表和从表是相互约束,如果想通过主表去影响从表的数据,需要使用级联操作。

主表删除行,连带从表的相关行一起删除;

#级联删除:外键约束 on delete cascade;
alter table emp add foreign key(did) references dept(id) on update cascade ;

主表修改主键值,连带从表相关行的外键值一起修改。

#级联更新:外键约束 on update cascade;
alter table emp add foreign key(did) references dept(id) on delete cascade

2)三种情况下添加外键约束

①一对一关系

在任何一方添加外键,引用到另外一方的主键。
一般一对一关系很少见,遇到一对一关系的表最好是合并表。

-- 新添加一列字段:
alter table 从表 add 新列 int;
-- 将新列设为外键援引主表的主键
alter table 从表 add foreign key(外键) references 主表(主键);

②一对多关系

在多的一方添加外键,引用到一的一方的主键。

-- 表已经创建完成:alter table 从表 add foreign key(外键) references 主表(主键);
alter table 从表 add foreign key(外键) references 主表(主键);

--创建表时:在从表中
 foreign key(did) references dept(id);

多对多关系

创建第三张表,在第三张表中添加两个外键,分别援引另外两个表的主键。
已有coder,project表,创建第三张表分别援引这两个表的主键。

-- 创建第三张表分别指令另外两个表的主键。
create table coder_project(
	cid int,
	pid int,
	foreign key(cid) references coder(id),
	foreign key(pid) references project(id)
);

4)删除外键约束

查询外键约束名使用:show create table 数据表名 ;

-- 语法:alter table emp drop foreign key 外键约束名;
alter table emp drop foreign key emp_ibfk_1;

第二章:MYSQL数据库多表查询

1)内连接,外连接等

2)关联子查询

看这个大佬写的就好了,他写的太好了我就不献丑了

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

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

相关文章

配置您的 Web 服务器以包含 X-Frame-Options 标头

介绍 X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, </iframe> 或者 <object> 中展现的标记。网站可以使用此功能&#xff0c;来确保自己网站的内容没有被嵌套到别人的网站中去&#xff0c;也从而避免了点击劫持 (clickjackin…

mysql数据库之备份和恢复

1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为,操作错误,运算错误,磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃. 2.数据…

Python爬虫入门之爬虫解析提取数据的四种方法

本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家Python爬虫的学习有所帮助。 基础爬虫的固定模式 笔者这里所谈的基础爬虫&#xff0c;指的是不需要处理像异步加载、验证码、代理等高阶爬虫技术的爬虫…

Vscode开发第一个Vue+Element Plus示例

Vscode开发第一个VueElement Plus示例 目前&#xff0c;前端开发工具非常多&#xff0c;如Webstorm、Atom、HBuilder、Visual Studio Code、Sublime Text、Notepad等。对于有经验的开发者来说&#xff0c;使用哪一款工具都可以。笔者习惯使用Visual Studio Code。 Visual St…

什么是镜像?阿里云服务器镜像是什么?镜像怎么选?

阿里云服务器镜像就是云服务器的装机盘&#xff0c;镜像是为云服务器安装操作系统的。阿里云镜像分为类型分为公共镜像、自定义镜像、共享镜像、云市场镜像和社区镜像&#xff0c;如下图&#xff1a; 目录 什么是镜像&#xff1f; 镜像种类说明 公共镜像 自定义镜像 共享…

【HarmonyOS】轻量级智能穿戴应用如何在页面中实现数据传递与全局变量的使用

【关键词】 轻量级智能穿戴、LiteWearable、数据传递、全局变量 【问题描述】 开发轻量级智能穿戴LiteWearable应用&#xff0c;在app.js中定义全局变量&#xff0c;在页面中通过this.$app.$def.xxx获取时&#xff0c;报错TypeError: Cannot read property $def of undefined…

FlinkTableAPI与SQL编程实战

FlinkTableAPI与SQL编程实战 接下来我们一起来进入到FlinkSQL的编码实战当中&#xff0c;通过代码来实现FlinkSQL的编码开发 1、Flink TableAPI实践 1.1、创建Maven工程 并添加以jar包坐标依赖 <properties><maven.compiler.source>8</maven.compiler.source…

Spring Redis 启用TLS配置支持(踩坑解决)

由于线上Redis要启用TLS,搜遍了google百度也没一个标准的解决方案,要不这个方法没有,要不那个类找不到...要不就是配置了还是一直连不上redis.... 本文基于 spring-data-redis-2.1.9.RELEASE 版本来提供一个解决方案: 1.运维那边提供过来三个文件,分别是redis.crt redis.key …

设计模式 -- 解释器模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

易基因:精原干细胞移植后出生小鼠子代中的精子DNA甲基化变化机制|新研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 精原干细胞移植&#xff08;Spermatogonial stem cell transplantation&#xff0c;SSCT&#xff09;被提议作为儿童癌症幸存者的生育疗法。SSCT首先冷冻保存睾丸活检&#xff0c;然后再…

【2023 · CANN训练营第一季】应用开发深入讲解——第二章 模型推理

学习目标 学习资源 内存管理 在线课程 文档 模型推理 文档 第1节 AscendCL运行资源管理 运行资源管理概述 申请运行管理资源时&#xff0c;需按顺序依次申请&#xff1a; Device 、 Context 、 Stream &#xff0c;然后根据实际需求调用 aclrtGetRunMode 接口获取软件栈的…

黑马Redis实战项目——黑马点评笔记06 | 好友关注

黑马Redis实战项目——黑马点评笔记06 | 好友关注 1、关注和取关2、共同关注2.1 查看他人主页2.2 查询共同关注A 改造关注和取关功能B 求交集 3、关注推送3.1 Feed 流分析3.1.1、拉模式&#xff08;读扩散&#xff09;3.1.2、推模式&#xff08;写扩散&#xff09;3.1.3、推拉结…

C++ JPEG编码

依据上一篇的JPEG编码所得到的RGB信息&#xff0c;我们可以重新对RGB图片进行编码&#xff0c;也可对其他图片如BMP所得到的RGB信息进行编码,来得到*.jpg文件&#xff0c;注意我这里实现的JPEG编码不知道为啥编码出来的文件比原来大了好多。 还有要注意的地方&#xff0c;下面会…

【计算机三级网络技术】 第六篇 交换机及其配置

文章目录 IPS&#xff08;入侵防护系统&#xff09;相关知识点蓝牙服务器技术DNS 服务器WWW 服务器FTP 服务器邮件&#xff08;Winmail 邮件服务器&#xff09;生成树协议IEEEVLAN 标识的描述DHCP 服务器 IPS&#xff08;入侵防护系统&#xff09;相关知识点 1、入侵防护系统&…

迅为i.MX6ULL开发板生成 KEY 文件,并安装

使用“ssh-keygen” 生成个四个 key 文件“ssh_host_rsa_key” “ssh_host_dsa_key” “ssh_host_ecdsa_key” 和“ssh_host_ed25519_key” 。 1 在虚拟机 Ubuntu 控制台&#xff0c; “ /home/ssh/openssh-4.6p1” 目录下&#xff0c; 使用命 令“ssh-keygen -t rsa -f ssh…

帮助客户实现自助服务,企业可以打造产品知识库来解决

随着科技的不断发展&#xff0c;越来越多的企业开始将自助服务作为一种解决客户问题的方式。自助服务不仅可以提高客户满意度&#xff0c;还可以减少企业的工作量和成本。为了帮助客户实现自助服务&#xff0c;企业可以打造产品知识库来解决客户问题。本文将介绍产品知识库的定…

shell脚本----函数

文章目录 一、函数的定义1.1 shell函数:1.2函数如何定义 二、函数的返回值三、函数的传参四、函数变量的作用范围五、函数的递归六、函数库 一、函数的定义 1.1 shell函数: 使用函数可以避免代码重复使用函数可以将大的工程分割为若干小的功能模块&#xff0c;代码的可读性更…

数字农业农村解决方案(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 数字农业农村发展现状 数据基础薄弱&#xff1a;数据资源分散&#xff0c;天空地一体化数据获取能力弱&#xff1b;资源数字化、产业数字化水平不高&#xff0c;部分农业数…

“玲珑”编解码融合架构助力视频多元化需求

随着近年来 AI 技术的兴起&#xff0c;视频监控、汽车、智能家居、移动设备及数据中心等对高清视频处理有了越来越高的要求。安谋科技全新视频处理器——“玲珑”V6/V8&#xff0c;针对主流市场的视频流媒体技术进行了大量投入&#xff0c;通过一系列智能权衡实现了极大优化&am…

常用数据处理方式

文章目录 缺失值处理删除法填充法基于统计学变量填充基于插值填充基于模型填充基于预测填充 不处理 异常值处理基于统计分析的方法基于聚类的方法基于树的方法基于预测的方法 数据重采样标准化min-max标准化&#xff08;归一化&#xff09;z-score标准化&#xff08;规范化&…