MYSQL基础---多表联查

多表联查

数据为什么需要多表联查 ?

  1. 数据来源多张表的时候需要进行关联
  2. 在实际开发过程中很多需要同时多个表中的数据


内连接 inner join

内连接和外连接一样都是最常用的连接查询,它根据表中共同的列进行匹配,特别时两个表存在主外键关系时,通常会使用内连接查询内连接也是等值连接,返回的结果集时两个表中所有相匹配的数据,舍弃不匹配的数据

等值连接(隐式内连接)                  简单,出问题不好调

select 列名 。。。 from 表1,表2,表3 。。。 where 关联条件,还可以过滤条件

MYSQL基础---多表联查_第1张图片


 

inner join 内连接 (显示内连接)on,     扩展方便

select 列名 ,… from 表1

[inner]   join  表2 on 关联条件

[inner]   join  表3 on 关联条件

[inner]   join  表4 on 关联条件

[inner]   join  表5 on 关联条件

where 过滤条件;

MYSQL基础---多表联查_第2张图片

外连接

MYSQL基础---多表联查_第3张图片

MYSQL基础---多表联查_第4张图片

外连接式至少返回一个表中的所有记录,根据匹配条件有选择性地返回另外一张表的记录 外连接就是在满足表连接关系的情况下不但可以查找出匹配的数据,而且还可以包括坐标,右表或者两表中的所有数据行

左外连接left join on 条件

左外连接左表完整,如果不匹配null值填充

MYSQL基础---多表联查_第5张图片

右外连接right join on 条件

右外连接右表完整,如果不匹配null填充

MYSQL基础---多表联查_第6张图片

交叉连接 (笛卡尔乘积) corss join   (不需要条件的连接)

MYSQL基础---多表联查_第7张图片MYSQL基础---多表联查_第8张图片

子查询

MYSQL基础---多表联查_第9张图片

 

联合查询

union 合并去重复 两个的集合并集,并且会排重

如果是一个字段,重复直接去掉,如果是多个字段,都相同才会去重

MYSQL基础---多表联查_第10张图片

union all : 但是不会去重  (union all 查询效率要比union高)

MYSQL基础---多表联查_第11张图片

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