MySQL 几种连表查询详解

第一步:首先介绍表连接分类(内连接,外连接,交叉连接)和连接方法(如下):

A)内连接:join,inner join

B)外连接:left join,left outer join,right join,right outer join,union

C)交叉连接:cross join

第二步:建表两张users表,success表
MySQL 几种连表查询详解_第1张图片
第三步,写SQL,测试结果

内连接(只有一种场景)inner join 或者join(两种方式结果相同)

sql语句

select u.*, s.* from users u  join success s  on u.id = s.id
或
select u.*, s.* from users u  inner join success s  on u.id = s.id

运行结果:
MySQL 几种连表查询详解_第2张图片
这种场景下得到的是满足某一条件的A,B内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。

外连接(左连接,右连接),以左连接为例

左连接SQL语句:

select u.*,s.* from users u   left outer join success s    on u.id = s.id
或者
select u.*,s.* from users u   left  join success s    on u.id = s.id

运行结果:
MySQL 几种连表查询详解_第3张图片

右连接SQL语句:
   
select u.*,s.* from users u   right outer join success s    on u.id = s.id
或者
select u.*,s.* from users u   right  join success s    on u.id = s.id

运行结果:
MySQL 几种连表查询详解_第4张图片
左连接以左表为基表,查询左表所有数据以及关联的右表数据,如果右表没有关联数据以null补齐。
右连接以右表为基表,查询右表所有数据以及关联的左表数据,如果左表没有关联数据以null补齐。

交叉连接:cross join

SQL语句:

select a.*,b.* from users a   cross  join success b 

运行结果:
MySQL 几种连表查询详解_第5张图片
这个时候会显示users表跟success表每条数据都连接一下的结果,这个就是笛卡儿积

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