XXXXX
C/C++
XXXXX
C#/.net
XXXXX
js
java
java
开发导航 开发导航 www.endv.cn
天云

MYSQL中的各种连表查询操作

MYSQL中的各种连表查询操作

  

 

在mysql数据库中,主要有三种连表方式,分别是:

  1. 外连接 outer join

  2. 内连接 inner join

  3. 交叉连接 cross join

为了讲解以上三种连接,先于数据中构建好测试数据,涉及到两个表user、article:

user表,有4条数据article表,user_id表示文章所属的user

 

外连接

外连接又可以细分为三种:

  1. 左外连接

  2. 右外连接

  3. 完全外连接

左外连接

select * from user left join article on user.id=article.user_id;

无论左表在右表有无匹配,都返回左表的数据,缺失的右表数据为NULL

 

维恩图形象解析


右外连接

select * from user right join article on user.id=article.user_id;

无论右表在左表有无匹配,都返回右表的数据,缺失的左表数据为NULL

 

维恩图形象解析

 

完全外连接

mysql并不支持full join,如果支持,将会像如下sql语句:

select * from user full join article on user.id=article.user_id;

 

可以通过union all子句,将left join与right join组合在一起,达到类似full join的效果:

无论左右表有无匹配,都返回两者的数据,缺失的数据为NULL

 

 

维恩图形象解析

 

内连接

内连接相对于外链接,就是内连接只要左右表都匹配的数据,也就是交集

 

select * from user inner join article on user.id=article.user_id;

维恩图形象解析

 

交叉连接

交叉连接相当于求左右两表的笛卡尔积

 

什么是笛卡尔积?

比如我有两组数据,a(1, 2, 3) 与 b(4, 5 6),求它们的笛卡尔积的结果就是:

3×3 = 9 组数据

 

select * from user cross join article;

4×7=28 组数据

 

 

总结:

你可以通过连表实现更复杂的查询

posted @ 2022-06-28 20:54  Endv  阅读(5577)  评论(0编辑  收藏  举报