连接查询可以分为:
1)内连接查询
2)左连接查询
3)右连接查询
4)自连接查询
1. 内连接查询
查询两个表中符合条件的共有记录
内连接查询语法格式:
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
说明:
- inner join 就是内连接查询关键字
- on 就是连接查询条件
例1:使用内连接查询学生表与班级表:
select * from students as s inner join classes as c on s.cls_id = c.id;
连接查询-左连接
以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值填充
连接查询-右连接
以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在使用null值填充
连接查询-自连接
左表和右表是同一个表,根据连接查询条件查询两个表中的数据。要给两张表分别取别名这样才能区分开
例1:查询省的名称为“广东省”的所有城市
- 自连接查询就是把一张表模拟成左右两张表,然后进行连表查询。
- 自连接就是一种特殊的连接方式,连接的表还是本身这张表
子查询
在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询.
主查询和子查询的关系:
1)子查询是嵌入到主查询中
2)子查询是辅助主查询的,要么充当条件,要么充当数据源
3)子查询是可以独立存在的语句,是一条完整的 select 语句
例1. 查询平均年龄的学生:
select avg(age) from students
查询大于平均年龄的学生:
select * from students where age > (select avg(age) from students);
例2;查询所有学生的班级ID
select cls_id from students;
查询学生在班的所有班级名字
select name from classes where id in (select cls_id from students)
例2;查询年龄最大和身高最高
select max(age),max(height) from students;
查询年龄最大同时也要身高最高的学生信息
select * from students where (age, height) = (select max(age), max(height) from students);