连接、联合查询简单介绍

一、连接查询
1.交叉连接:cross join(不常用)
  概念:没有任何查询条件限制的查询,被称为交叉连接查询。
  例如:select * from A cross join B[ cross join ...];(官方写法) 或者 select * from A , B[,C...];
  注意:查询出来的结果是笛卡尔积。

在这里插入图片描述

2.内连接:inner join on
(1)隐式内连接:就是交叉连接后,可以有where+关联条件。
    例如:select * from A,B where A.id = B.id;

(2)显式内连接(常用):就是我们正常用的inner join.. on...
    a.等值连接:就是on后面跟的关联条件(A.id = B.id)是“=”。
    例如:select * from A [inner] join B on A.id = B.id [and..] where...

    b.不等值连接:就是on后面跟的关联条件(A.id != B.id)是“<“或”>”。
    例如:select * from A [inner] join B on A.id < B.id [and..] where...
    

(3)自连接查询:就是在一张表内,存在主外键关系,我们可以看成两张表,使用内连接查询,叫做自连接查询。
    例如:select * from A a inner join A a1 on a.id = a1.tid where...    
注意:1.我们所说的内连接查询指的就是显式的。
     2.当内连接查询没有关联条件的时候和交叉连接一样,查询出的结果都是笛卡尔积。

在这里插入图片描述

3.外连接查询
(1)左外连接查询:left [outer] join...on...
    概念:就是左表的数据全部展示出来,其中包括关联上的数据和没关联上的,没关联上的在中间表中关联表的数据展示为null。

在这里插入图片描述

(2)右外连接查询:right [outer] join...on...
    概念:就是右表的数据全部展示出来,其中包括关联上的数据和没关联上的,没关联上的在中间表中关联表的数据展示为null。

在这里插入图片描述

(3)外连接也存在等值连接和不等值连接。
注意:1.左外和右外都可以通过两张表互换位置来实现彼此的目的。
连接查询总结:
1.on...and...where: on后面加的是关联条件;and后跟的条件是过滤关联表中的数据然后在根据关联条件获取中间表数据;where 过滤的是中间表的信息,从而获取最终信息。
2.外连接其实可以看成是在内连接的 查询后加上左/右表中没关联上的数据。
二、联合查询:
1.union:查询多表去重后的并集。联合查询的字段数量必须相同,查询出的字段名默认是以第一个表的字段名字命名的。
2.union All:查询多表的并集(不去重复)。规则和union一样。
三、全连接查询:full join
注意:mysql数据库不支持full join 查询。但是们可以通过 left join 、union、right join 来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值