1、内连接
内连接:对于查询结果的要求:只有两个表中能够匹配到数据,才会做显示。
通过on关键字进行表与表之间的关联
select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2...
from 表名1 inner join 表名2
on 表名1.列名=表名2.列名;
1.1三表及其更多表连接
:通过on关键字进行表与表之间的关联
select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2...表名3.列名3.....
from 表名1 inner join 表名2
on 表名1.列名=表名2.列名 inner join 表名2.列名=表名3.列名 inner join........
多表查询的做题思路:
- 确定表
- 表与表之间是否能建立起关联(直接,间接)
- 查询的列
- 其它的额外条件
2、外连接
特征:至少会返回一个表的所有内容。返回一个表全部内容,另一个表全为空。
分类: 区分左表和右表:在连接条件中,先写的是左表,后写的是右表
左连接:
select 表名.列名
from 表名1 left outer join 表名2
on 表名1.列=表名2.列
右连接:select 表名.列名
from 表名1 right outer join 表名2
on 表名1.列名=表名2.列名;
3、子查询
在查询语句的基础上,嵌套的查询语句,一般表示where后面的条件
子查询分类: 条件要什么,子查询就查什么
使用情况:
1.在条件查询过程中,条件没有明确告诉咱们
例:查询计算机系的学生修了哪些课程?计算机系–>学生–>课程
2.聚合函数出现在条件中,因为where后面不能直接写聚合函数,那么就可以考虑把聚合函数的值给查询出来。
#例:查询计算机系的学生修了哪些课程?计算机系-->学生-->课程
#例:成绩>平均成绩
where grade>(select avg(grade) from sc);
1.1.嵌套子查询 in 子查询的结果是有多个值
select 列名 from 表名 where 列名 in(select 列名 from 表名 where
列名 in(select查询语句));
-
2.相关子查询
子查询的结果只有一个值
select 列名 from 表名 where 列名=(select 列名 from 表名 where 列名 =(select查询语句));
insert和select语句的结合:insert into 表名 select查询语句;
update set 和 delete from和前面的方式一样,都是在where后跟查询语句。