3_2、mysql基础--DQL--多表

一、多表联合查询

多表联合查询就是同时查询两个或两个以上的表。多表联合查询有如下分类:

1.1 交叉连接查询【笛卡尔积】

select * from A,B,...

交叉连接查询可以理解为:一张表的每一行,连接另一张表的任意一行返回。加入A表有m行数据(k1列)、B表有n行数据(k2列),则总共返回m*n行数据(k1+k2列)。

1.2 内连接

语法一-->隐式内连接(SQL92标准):select * from A,B where 条件;
语法二-->显示内连接(SQL99标准):select * from A inner join B on 条件;   //inner可以省略

内连接查询求多张表的交集:
在这里插入图片描述

1.3 外连接

左外连接: select * from A left outer join B on 条件;

右外连接: select * from A right outer join B on 条件;

满外连接: select * from A full outer join B on 条件;

1、outer可以省略;

2、oracle里面有full join。但在mysql对full join支持的不好,我们可以使用union来达到目的。

下面是从网上找的一张很形象的关于SQL JOINS的解释图

在这里插入图片描述

//多标联合查询示例
SELECT *
FROM A
LEFT JOIN B ON ... AND ...
LEFT JOIN C ON ... AND ...
LEFT JOIN D ON ... AND ...

WHERE ...

二、多表联合查询执行顺序

(1)from或from…left join做笛卡尔积

(2)ON、AND过滤

询执行顺序

(1)from或from…left join做笛卡尔积

(2)ON、AND过滤

其他和单表顺序相同

1、从开发者视角学习MYSQl系列文章:https://blog.csdn.net/maoxuemin/article/details/123523457
2、快速问答入口:https://gitee.com/wendakuai/introducton/wikis/question

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值