多表查询

多表查询:就是输出的字段来自很多表,不单单是一张表

 

1:交叉连接

不适用任何匹配条件,生成笛卡尔积

select *
from course cross join class;

 

2个表的字段都连接在一张大表上

2:内连接

含义:取出2张表的公共部分,相当于就是从笛卡尔积中筛选出正确的结果

就是输出来自多张表,且筛选出符合条件的字段,对于连接表的顺序没有固定的要求

思路

找公共的列,就是2张表中都有的公共列,如果没有公共列的话,就找第三方的表,总会有公共列的

 

格式有2种

select 
from 表1 as 表2 as on 表1.字段名=表2.字段名
where 筛选条件




select
from 表1,表2  as 
where 表1.字段名=表2.字段名 and  字段 筛选条件

 

2种选择

3:外连接

查看哪一张表的完整数据,包括不符合连接条件的数据也要

就是输出的字段来自于多张表,既要满足条件也要不满足条件的字段的信息

有左外连接和右外连接,这2个有非常大的差别

 左外连接:在内连接的基础上保留左表的记录

格式:

select
from 表1 left join 表2 on 表1.字段1=表2.字段2

 

如果是左外连接,就把表放在主表放在左边

,如果是没有对应的记录也会显示出来,用null显示

 

 

右外连接:在内连接的基础上保留了右表的记录

select
from 表1 right join 表2 on 表1.字段=表2.字段

 

  

 

全外连接:在内连接的基础上,保留左右2个表没有对应关系的记录

mysql不支持使用全外连接

 

 

 

 

4:子查询 

就是嵌套查询

 

 

 

posted @ 2023-12-04 19:28  q_7  阅读(5)  评论(0编辑  收藏  举报