多表联查
数据为什么需要多表联查 ?
- 数据来源多张表的时候需要进行关联
- 在实际开发过程中很多需要同时多个表中的数据
内连接 inner join
内连接和外连接一样都是最常用的连接查询,它根据表中共同的列进行匹配,特别时两个表存在主外键关系时,通常会使用内连接查询内连接也是等值连接,返回的结果集时两个表中所有相匹配的数据,舍弃不匹配的数据
等值连接(隐式内连接) 简单,出问题不好调
select 列名 。。。 from 表1,表2,表3 。。。 where 关联条件,还可以过滤条件
inner join 内连接 (显示内连接)on, 扩展方便
select 列名 ,… from 表1
[inner] join 表2 on 关联条件
[inner] join 表3 on 关联条件
[inner] join 表4 on 关联条件
[inner] join 表5 on 关联条件
where 过滤条件;
外连接
外连接式至少返回一个表中的所有记录,根据匹配条件有选择性地返回另外一张表的记录 外连接就是在满足表连接关系的情况下不但可以查找出匹配的数据,而且还可以包括坐标,右表或者两表中的所有数据行
左外连接left join on 条件
左外连接左表完整,如果不匹配null值填充
右外连接right join on 条件
右外连接右表完整,如果不匹配null填充
交叉连接 (笛卡尔乘积) corss join (不需要条件的连接)
子查询
联合查询
union 合并去重复 两个的集合并集,并且会排重
如果是一个字段,重复直接去掉,如果是多个字段,都相同才会去重
union all : 但是不会去重 (union all 查询效率要比union高)