学习MySQL的第五天:多表查询(基础篇)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT的任何一个。

cafd1ad099cd462e8fba0e7c041a3666.png


一,多表关系:


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


➢一对多(多对一)

➢多对多

➢一对一


1,一对多(多对一 )


➢案例: 部门与员工的关系

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

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


f9f75416d6604460b04f292722136dae.png


2,多对多:


➢案例: 学生与课程的关系

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

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

通过中间表来维护多张表之间的关系。


4f84c5ca45d243769a982c580d193512.png


3,一对一 :


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

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

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


afb77ec522044665944678be68088e24.png


为了限定两表之间是一对一的关系,所以要有约束。


二,多表查询概述:


●概述: 指从多张表中查询数据

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


笛卡尔乘积:


0c5b7168d2ba4632afca56f91fd2cd99.png


消除笛卡尔乘积:


6971665fe8da484184b42613abe20b99.png


三,多表查询分类


➢连接查询


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

外连接:



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

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

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


➢子查询


ecb3b84efd1a49e49e087b814c3039de.png


一,连接查询-内连接


1,隐式内连接:


a968ea58d6b24b59a2bca8d4aa25e68a.png


2,显式内连接:


f8b5e1172a794ea997bf1c7b3d405bd2.png


案例:


86ae1f3a09b948f79b5b588b825c136a.png


1.


6b8507db1f22470d89cb0056f3832d84.png

4cd9708333a94bd084a84114bff603bf.png


起了别名以后,就尽量不要使用原来的表名。


2.


9ccd2af5d0e04180b32c6febe88f90e3.png


inner可以省去。


二,连接查询-外连接


1,左外连接:


7a588b91de9748dd8500f2c3deb27cf7.png


2,右外连接:


eef106b21965439598fd02b11d498b9d.png


案例:


83ef8677bdac4a379507379bda390478.png


outer可以去掉


b5e4a59ebf7041c9a2c82fd310a26326.png


三,连接查询-自连接


c99119ea6db942ff8bdbd99dc3964beb.png


自连接查询,可以是内连接查询,也可以是外连接查询。


案例:


11a220659aa04e18a0ea43539d2467ff.png

37bd532a90b6409793248e952a4b1aee.png


自连接查询时,一定要给表起别名。不然的话,我们无法弄清条件和字段是哪一张表中的数据。


四,联合查询-union,union all


对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。


f1d7d15e7e7d487d918ef1040acd004c.png


f8f5a3001f3c48c1b0975dfb3f384d5d.png


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

union all会将全部的数据直接合并在一起,union 会对合并之后的数据去重。


五,子查询


概念: SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。


d0d853f5394047ffa447600f8f5f7ac1.png


子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT的任何一个。


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


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

➢列子查询(子 查询结果为一列)

➢行子查询(子查询结果为一行)

➢表子查询(子查询结果为多行多列)


根据子查询位置,分为: WHERE之后、FROM之后、SELECT 之后。


1,标量子查询:


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


案例:


913c8831a04d40f19ac930b72a77e9c9.png


分布查询,里面的就叫做子查询


b518157e42e246439463ccd00767e4d8.png

a3d444f607f94923b6b029d0af28df88.png


2,列子查询:


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


33d8ccf965c140f5a4c9b83588ad10f7.png


案例:


a9fedb8473d346a99de28ca61a7829fd.png


062299df64274b3688547353adc6188e.png


3,行子查询:


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


案例:


fd0cc865f2b44c60b0c5ffda6b9d25ef.png


三种形式;


4,表子查询:


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


案例:


47ca2b6b4ea9484282fc1a62039ded7f.png


17b216fdb6b24bd09211f7777a6fe05f.png


六,多表查询案例


7746f08da3a14d609e588427f16c03e1.png


课下自己做!!!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 关系型数据库 MySQL
|
存储 关系型数据库 MySQL
|
15天前
|
SQL 存储 关系型数据库
6本值得推荐的MySQL学习书籍
本文是关于MySQL学习书籍的推荐,作者在DotNetGuide技术社区和微信公众号收到读者请求后,精选了6本值得阅读的MySQL书籍,包括《SQL学习指南(第3版)》、《MySQL是怎样使用的:快速入门MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》、《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》以及《高性能MySQL(第4版)》和《MySQL技术内幕InnoDB存储引擎(第2版)》。此外,还有12本免费书籍的赠送活动,涵盖《SQL学习指南》、《MySQL是怎样使用的》等,赠书活动有效期至2024年4月9日。
|
20天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
19小时前
|
存储 SQL 关系型数据库
MySQL学习手册(第一部分)
mysql日常使用记录
7 0
|
15天前
|
SQL 关系型数据库 MySQL
mysql多表查询、函数查询
mysql多表查询、函数查询
|
存储 SQL 关系型数据库
|
1月前
|
SQL 关系型数据库 MySQL
Mysql多表查询详解
Mysql多表查询详解
25 0
|
15天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
85 1