⼦查询是把⼀个SELECT语句的结果当做别⼀个SELECT语句的条件,也叫嵌套查询
select * from table1 where col_name1 {= | IN} (
select col_name1 from table2 where col_name2 {= | IN} [(
select ...)
] ...
)嵌套的查询中只返回⼀⾏数据 • ⽰例:查询与"不想毕业"同学的同班同学
mysql> select * from student where class_id = (select class_id from student
where name = '不想毕业');




嵌套的查询中返回多⾏数据,使⽤[NOT] IN关键字 • ⽰例:查询"MySQL"或"Java"课程的成绩信息
select * from score where score.course_id in (select course.id from course where course.`name`='MySQL' or name='java' );


再查询不包括mysql和java的成绩

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



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


三表关联







该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,不会去掉结果集中的重复⾏

如果查询结果来自多个表,那么推荐使用合并查询
INSERT INTO table_name [(column [, column ...])] SELECT ...• 将student表中C++001班的学⽣复制到student1表中 student1插入前的原表。

student表中C++001班的数据

语句插入

插入成功:
