0


MySQL【知识改变命运】11

联合查询

6. ⼦查询

⼦查询是把⼀个SELECT语句的结果当做别⼀个SELECT语句的条件,也叫嵌套查询

6.1 语法

select*from table1 where col_name1 {=|IN} (select col_name1 from table2 where col_name2 {=|IN} [(select...)]...)

6.2 单⾏⼦查询

嵌套的查询中只返回⼀⾏数据
• ⽰例:查询与"不想毕业"同学的同班同学

mysql>select*from student where class_id =(select class_id from student 
where name ='不想毕业');
  1. 确定参与查询表:学生表
  2. 先查出不想毕业这位同学的班级编号在这里插入图片描述
  3. 在学生表中查出与不想毕业的同班同学,过滤条件是class_id=2在这里插入图片描述
  4. 组合成子查询的方式在这里插入图片描述
  5. 过滤掉不想毕业这位同学的记录

在这里插入图片描述

在这里插入图片描述

6.3 多⾏⼦查询

嵌套的查询中返回多⾏数据,使⽤[NOT] IN关键字
• ⽰例:查询"MySQL"或"Java"课程的成绩信息

select*from score where score.course_id in(select course.id from course where course.`name`='MySQL'or name='java');
  1. 确定参与查询的表: 课程表,成绩表。
  2. 先查询课程表中的课程信息

在这里插入图片描述

  1. 通过课程编号在分数表里中查询对应的分数

在这里插入图片描述

  1. 合并成子查询的方式

在这里插入图片描述
再查询不包括mysql和java的成绩
在这里插入图片描述

6.4 多列⼦查询

单⾏⼦查询和多⾏⼦查询都只返回⼀列数据,多列⼦查询中可以返回多个列的数据,外层查询与嵌套
的内层查询的列要匹配
• ⽰例:查询重复录⼊的分数
1.对重复的列进行分组并计算这组重复的个数
在这里插入图片描述

  1. 进行对重复数据的筛选

在这里插入图片描述

  1. 确定内层条件并加入到外层查询当中

在这里插入图片描述

6.5 在from⼦句中使⽤⼦查询

当⼀个查询产⽣结果时,MySQL⾃动创建⼀个临时表,然后把结果集放在这个临时表中,最终返回
给⽤⼾,在from⼦句中也可以使⽤临时表进⾏⼦查询或表连接操作
• ⽰例:查询所有⽐"Java001班"平均分⾼的成绩信息
在这里插入图片描述
在这里插入图片描述
三表关联

  1. 再用成绩表中的真实成绩与平均分做比较

在这里插入图片描述
在这里插入图片描述

  • 这里小总结一下:用子查询返回的值,用于where 子句里面,用子查询生成的临时表 用于from 子句中。

7. 合并查询

  • 在实际应⽤中,为了合并多个select操作返回的结果,可以使⽤集合操作符 union,union all

7.1 创建新表并初始化数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 Union

  • 该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,会⾃动去掉结果集中的重复⾏。
  • ⽰例:查询student表中 id < 3 的同学和student1表中的所有同学

在这里插入图片描述

  • 还可以单表操作在这里插入图片描述

7.3 Union all

该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,不会去掉结果集中的重复⾏
在这里插入图片描述
如果查询结果来自多个表,那么推荐使用合并查询

8. 插⼊查询结果

8.1 语法

INSERTINTO table_name [(column[,column...])]SELECT...

8.2 ⽰例

• 将student表中C++001班的学⽣复制到student1表中
student1插入前的原表。
在这里插入图片描述
student表中C++001班的数据
在这里插入图片描述
语句插入
在这里插入图片描述
插入成功:
在这里插入图片描述

标签: mysql android 数据库

本文转载自: https://blog.csdn.net/2402_84062064/article/details/143102882
版权归原作者 代阳的专属博客 所有, 如有侵权,请联系我们删除。

“MySQL【知识改变命运】11”的评论:

还没有评论