mysql并行查询语句
简介: 在刚刚结束的乌镇世界互联网大会上,阿里云自研POLARDB云原生数据库当选世界互联网领先科技成果。POLARDB既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自...
2024.11.21上节课给大家介绍了MySQL子查询的基本内容,本节课我们准备给大家介绍MySQL的多表联合查询。大家都知道,MySQL多表联合查询包括内连接、外连接、笛卡尔积连接查询三种。今天我们先重点介绍常用的外连接与内连接查询,即left join /right join/inner join的基本用法。
常见的两表连接查询的基本语法结构如下:
select 表名.字段名,表名.字段名,表名.字段名,...from 左表表名 (as)左表别名left/right/inner join右表表名 (as) 右表别名 on 左表.连接字段=右表.连接字段 where 查询条件;01
左连接left (outer) join
左连接的定义:左连接全称为左外连接,是外连接的一种。它是以左表为基础,根据ON后给出的连接条件将两表连接起来。结果会将左表所有的记录列出,而右表只列出ON后与左表满足条件的部分。
为了更好地让大家理解,我们还是分别举栗子说明~先回顾一下上节课的titanic表与phone表的基本数据情况。
【titanic乘客基本信息表】
titanic表
【phone手机品牌表】
【任务1】我们想找出使用华为手机的乘客编号、姓名、性别、年龄和手机品牌。可以使用以下左连接查询实现。
select a.PassengerId,a.name,b.sex,b.age,a.phonebrandfrom phone a left join titanic b on a.PassengerId=b.passengerIdwhere a.phonebrand="HUAWEI";查询结果如下:
可以看到,查询结果把左表phone符合华为手机条件的所有查询结果都列出来了,而右表titanic只列出了与左表满足ON连接条件的部分结果(中间两列),其他不符合连接条件的结果均为NULL。
02
右连接right (outer) join
右连接的定义:右连接全称为右外连接,也是外连接的一种。与左连接刚好相反,它是以右表为基础,根据ON后给出的连接条件将两表连接起来。结果会将右表所有的记录列出,而左表只列出ON后与右表满足条件的部分。
【任务2】查找船舱等级为3且存活的乘客编号、姓名、是否存活、船舱等级和手机品牌,可以通过以下右连接查询实现。
select a.passengerId,a.name,b.survived,b.pclass,a.phonebrandfrom phone a right join titanic b on a.PassengerId=b.passengerIdwhereb.survived=1and b.pclass=3;可以看到,查询结果把右表titanic符合生存且船舱等级为3的条件的乘客都列出来了,而左表phone只列出了与右表满足ON连接条件的部分结果,其他不符合连接条件的结果均为NULL。
03
内连接inner join
内连接是一种一一映射关系,即左右两张表都同时存在的记录才能显示出来,用韦恩图表示是两个集合的交集。
【任务3】查找使用苹果手机并且年龄大于30岁的男性乘客,展示乘客编号,姓名,性别,年龄信息。可以通过以下内连接查询语句实现。
select a.passengerId,a.name,b.sex,b.agefrom phone a innerjoin titanic b on a.PassengerId=b.passengerIdwherea.phonebrand="iPhone"and b.age>30and b.sex="male";可以看出,内连接将同时符合查询条件(使用苹果手机并且年龄大于30岁的男性乘客),符合ON连接条件且同时存在于左右两张表的记录都展示出来了,也就是求符合查询条件的左右两张表的交集。
注意:
1、left join 与left outer join 等价,同理right join 与right outer join 等价,inner join 与join 等价。通常可以使用缩略写法。2、三表及以上联合查询用法与两表联合查询用法基本一致,但通常建议一次性连接多表查询的数量不超过4个,表数量越多,可能影响最终的查询效率。3、注意MySQL执行顺序。4、多表连接查询,表之间必须有可以建立连接的共同唯一字段。04
总结
以上就是本节课要介绍的全部内容,下节课我们将继续介绍多表联合查询的其他内容以及多表联合查询与子查询的联系与区别,敬请关注!
简介: 在刚刚结束的乌镇世界互联网大会上,阿里云自研POLARDB云原生数据库当选世界互联网领先科技成果。POLARDB既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自...
2024.11.21mysql分页查询是先查询出来所有数据,然后跳过offset,取limit条记录,造成了越往后的页数,查询时间越长一般优化思路是转换offset,让offset尽可能的小,最好能每次查询都是第一页,也...
2024.11.22一、关联查询1、概念在查询数据时,所需要的数据不只在一张表中,可能在两张或多张表中。这个时候,需要同时操作这些表来查询数据,即关联查询。关联查询所涉及到的表与表之间都会存在有关联的字段,如员工表的部门...
2024.11.22前言Hey,大家好,我是码农星期八!上次怎么大概说了一下or,!=,in/not in between,like,limit,order by,group by。但是还没完,咱们接着往下说!查询我们的...
2024.11.20--SQL多表查询基础语法-- join用于把来自两个或多个表的行结合起来。-- INNER JOIN:如果表中有至少一个匹配,则返回行-- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的...
2024.11.20