详细介绍:MySQL零基础学习Day4——多表查询

news/2025/9/28 8:30:08/文章来源:https://www.cnblogs.com/slgkaifa/p/19116031

详细介绍:MySQL零基础学习Day4——多表查询

一.多表关系

1.含义

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种关系,基本分为三种:

  • 一对多
  • 多对多
  • 一对一

2.一对多(多对一)

案例:部门和员工 的关系

关系:一个部门对应多个员工,一个员工对应一个部门

实现:在多的一方建立外键,,指向一的一方的主键

3.多对多

案例:学生与课程的关系

关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

4.一对一

案例:用户与用户详情的关系

关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率

实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

二.多表查询概述

1.含义

指从多张表中查询数据

笛卡尔积:笛卡尔积乘积是指在数学中,两个集合A和集合B的所有组合情况(在多表查询时需要取消无效的笛卡尔积)

如何消除无效的笛卡尔积:

select * from emp,dept where emp.dept_id = dept.id;

2.多表查询的分类

连接查询

   内连接:相当于查询A、B交集部分数据

 外连接:

  左外连接:查询左表所有数据,以及两张表交集部分数据

       右外连接:查询右表所有数据,以及两张表交集部分数据

 自连接:当前表与自身的连接查询,自连接必须使用表别名

子查询

1)内连接

1.查询每一个员工的姓名,及关联的部门的名称(隐式内连接显示)
select e.emp,d.name from emp e,dept d where e.dept_id = d.id;
2.查询每一个员工的姓名,及关联的部门的名称(显示内连接实现) -- INNER JOIN --ON
select e.name,d.name from emp e join dept d on e.dept_id = d.id;
--INNER可以省略

2)外连接

1.查询emp表的所有数据,和对应的部门信息(左外连接)
select e.*,d.name from emp e left join dept d on e.dept_id = d.id;
2.查询dept表的所有数据,和对应的员工信息(右外连接)
select e.*,d.name from emp e right join dept d on e.dept_id = d.id;

注:一般实际应用中多用左外连接,因为左外可以将两个表位置换一下,效果和右外一样

3)自连接

-- 自连接
1.查询员工及其所属领导的名字
select a.name,b.name from emp a, emp b where a.managerid = b.id

4)联合查询

UNION ALL:直接将查询的结果进行合并

UNION:对数据进行合并之后进行自动去重

注意事项:

对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。

5)子查询

根据子查询结果不同,分为:

  • 标量子查询(子查询结果为单个值)

子查询返回的结果时单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询

常用操作符:=  <>  >  >=   <  <=

1.
a.查询“销售部”部门ID
b.根据销售部门ID查询员工信息
select * from emp where dept_id = (select id from dept where name = "销售部");
2.查询在“东方白”入职之后的员工信息
select * from emp where entrydate > (select entrydate from emo where name ="东方白");
  • 列子查询(子查询结果为一列)

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询

常用的操作符:IN、NOT IN、ANY、SOME、ALL

1.查询销售部和市场部的所有员工信息
a.查询销售部和市场部的部门ID
b.根据部门ID,查询员工信息
select * from emp where dept_id in(select id from dept where name = "销售部" or name = "市场部");
  • 行子查询(子查询结果为一行)

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询

常用的操作符:=、<>、IN、NOT IN

1.查询与“张无忌”的薪资及直属领导相同的员工信息
a.查询“张无忌”的薪资及直属领导
b.查询与“张无忌”的薪资及直属领导相同的员工信息
select * from where (salary,managerid) = (select salary,managerid from emp where name = "张无忌");
  • 表子查询(子查询结果为多行多列)

子查询返回的结果是多行多利,这种子查询称为表子查询

常用的操作符:IN

1.查询入职日期是在“2006-01-01”之后的员工信息,及其部门信息
a.入职日期是在“2006-01-01”之后的员工信息
b.查询这部分的员工信息,对应的部门信息
select e.*,d.* from (select * form emp where entrydate > "2016-01-01") e left join dept on e.dept_id = d.id;

注:根据子查询位置,分为WHERE之后,FROM之后,SEKECT之后

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

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

相关文章

MetaGPT实战指南:构建模拟公司运营的多智能体系统 - 教程

MetaGPT实战指南:构建模拟公司运营的多智能体系统 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

2017网站建设报价单营销论坛网站建设

引言 在计算机科学中&#xff0c;数据结构和算法是构建高效软件系统的基石。而排序算法作为算法领域的重要组成部分&#xff0c;一直在各种应用场景中发挥着关键作用。今天我们将聚焦于一种基于插入排序的改进版本——希尔排序&#xff08;Shell Sort&#xff09;&#xff0c;深…

Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台

Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台 Revolutionize Streaming Analytics 请访问原文链接:https://sysin.org/blog/timeplus/ 查看最新版。原创…

《HelloGitHub》第 114 期

兴趣是最好的老师,HelloGitHub 让你对开源感兴趣!简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖…

网站建设与准备乐清城市网官网

这阵子在捣鼓一个将游戏视频打包成本地可播放文件的模块。开始使用avi作为容器&#xff0c;弄了半天无奈avi对aac的支持实在有限&#xff0c;在播放时音视频时无法完美同步。 关于这点avi文档中有提到&#xff1a; For AAC, one RAW AAC frame usually spans over 1024 samples…

重庆网站推广网络推广申请建设部门网站的报告

大数据产业是以数据及数据所蕴含的信息价值为核心生产要素&#xff0c;通过数据技术、数据产品、数据服务等形式&#xff0c;使数据与信息价值在各行业经济活动中得到充分释放的赋能型产业。 大数据产业定义一般分为核心业态、关联业态、衍生业态三大业态。 一、专…

智能微电网 —— 如何无缝集成分布式光伏 / 风电? - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【鸿蒙生态共建】一文说清基础类型数据的非预期输入转换与兜底-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利 - 详解

【鸿蒙生态共建】一文说清基础类型数据的非预期输入转换与兜底-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利 - 详解2025-09-28 08:16 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: p…

一级a做爰片免费网站体验区网站制造

2014年杭州电子科技大学Java期末试卷.doc杭州电子科技大学学生考试卷( A )卷考试课程Java语言程序设计考试日期2014年 6月 16日成 绩课程号教师号任课教师姓名考生姓名学号(8位)年级专业注意&#xff1a;所有答案均写在答卷上&#xff0c;写在试卷上无效;(一)单选题(每题2分&am…

青岛商城网站建设劳务公司注册需要什么条件

CMA实验室认可&#xff0c;即中国计量认证&#xff08;China Metrology Accreditation&#xff09;的实验室资质认定&#xff0c;以下是对其的详细解读&#xff1a; 一、定义与目的 CMA认证是经省级以上人民政府计量行政部门对实验室的计量检定、测试能力和可靠性考核合格后进…

网站建设资质要求贝壳找房官网 二手房

文章目录 1 函数原型2 参数3 返回值4 使用说明5 示例5.1 示例1 1 函数原型 strcat()&#xff1a;将src指向的字符串拼接在dest指向的字符串末尾&#xff0c;函数原型如下&#xff1a; char *strcat(char *dest, const char *src);2 参数 strcat()函数有两个参数src和dest&am…

网站建设需要条件查询网域名解析

共享数据缓冲区 概述共享数据缓冲区管理共享缓冲区管理的核心功能包括:共享数据缓冲区的组织结构初始化共享缓冲池BufferDesc 结构体InitBufferPool 函数如何确定请求的数据页面是否在缓冲区中?BufferTag 结构体RelFileNode 结构体ForkNumber 结构体ReadBuffer_common 函数怎…

Splunk Enterprise 10.0.1 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台

Splunk Enterprise 10.0.1 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台Splunk Enterprise 10.0.1 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台 Search, analysis, and visu…

基于51单片机宠物喂食系统设计 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

福建建设工程设计备案网站怎么推广公众号让人关注

1.hash类型介绍 可以理解为redis中的一个小型redis 2.v 3.hash数据类型的扩展操作 4.hash类型数据操作的注意事项

[Luogu 13345] EGOI 2025:IMO

先根据排序方案确定最终顺序。下文称第 \(i\) 个人为最终排名为 \(i\) 的那个人,其原始编号为 \(id_i\),总成绩为 \(v_i\)。 若第 \(i\) 个人公布了 \(c_i\) 道题,公布部分成绩为 \(s_i\),则可能成绩区间为 \([s_i…

广州金融网站设计wordpress 淘宝客主题

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 time.sleep(3) 固定等待3秒 driver.implicitly_wait(10) 隐性的等待&#xff0c;对应全局 WebD…

详细介绍:flutter 编译报错java.util.zip.ZipException: zip END header not found

详细介绍:flutter 编译报错java.util.zip.ZipException: zip END header not foundpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

Linux高级技巧之集群部署(七) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …