--多表查询
直接查询:只需要在单表查询的基础上增加一张表即可,返回的结果是多张表的表数据个数的乘积,会有冗余数据
select * from student,class
select * from student,class where student.class_id = class.id



连接查询:
内连接查询(INNER JOIN 或 JOIN)
select * from student join class on student.class_id = class.id;

select student.id class.name from student join class on student.class_id = class.id;

select stu .id cls.name from student stu join class cls on stu .class_id = cls.id; --- 取别名

外连接查询:
左外连接查询(LEFT OUTER JOIN 或 LEFT JOIN)
左边的表是不看条件的,无论条件是否满足,都会返回左边中的所有数据,只有右边的表会看条件,对于右表,只有满足条件,才会返回
select * from student left join class on student.class_id = class.id;

右外连接查询(LEFT OUTER JOIN 或 LEFT JOIN)
右边的表是不看条件的,无论条件是否满足,都会返回右边中的所有数据,只有左边的表会看条件,对于左表,只有满足条件,才会返回
select * from student right join class on student.class_id = class.id;

UNION 查询
在纵向上将多张表的查询结果拼接起来返回 注意:必须保证多张表查询的字段个数一致(id,name)
select id,name from student union select id,name,from class

子查询:将一个查询语句查询的结果作为另外一张表的查询条件来使用
select class_id from student where id=3
select class_id from student where id>=3
select name from class where id = (select class_id from student where id=3)
select name from class where id = (select class_id from student where id>=3) -- 报错
select name from class where id in (select class_id from student where id>=3) -- 正确
