MYSQL多表连接查询和子查询详解

内连接

内连接:对于查询结果的要求:只有两个表中能够匹配到数据,才会做显示。

通过on关键字进行表与表之间的关联
select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2…
from 表名1 inner join 表名2
on 表名1.列名=表名2.列名;

三表及其更多表连接
:通过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…

多表查询的做题思路:
1.确定表
2.表与表之间是否能建立起关联(直接,间接)
3.查询的列
4.其它的额外条件

.外连接
特征:至少会返回一个表的所有内容。返回一个表全部内容,另一个表全为空。

分类: 区分左表和右表:在连接条件中,先写的是左表,后写的是右表
左连接:select 表名.列名
from 表名1 left outer join 表名2
on 表名1.列=表名2.列
右连接:select 表名.列名
from 表名1 right outer join 表名2
on 表名1.列名=表名2.列名;

子查询

在查询语句的基础上,嵌套的查询语句,一般表示where后面的条件
子查询分类: 条件要什么,子查询就查什么
使用情况:
1.在条件查询过程中,条件没有明确告诉咱们
例:查询计算机系的学生修了哪些课程?计算机系–>学生–>课程
2.聚合函数出现在条件中,因为where后面不能直接写聚合函数,那么就可以考虑把聚合函数的值给查询出来。
例:成绩>平均成绩 where grade>(select avg(grade) from sc)
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后跟查询语句。

你可能感兴趣的:(MYSQL数据库,mysql,数据库)