Mysql多表查询

目录

一、连接查询

1.交叉连接(CROSS JOIN) 

2.内连接(inner join ,inner 可以省略)

2.1隐示内连接

2.2显示内连接

3.外连接(outer join,outer可以省略)

3.1左外连接(left outer join,outer可以省略)

3.2右外连接(right outer join,outer可以省略)

3.3全外连接(full join,mysql不支持)

 4.自连接

二、联合查询(union,union all) 

三、子查询

1.带in关键字的子查询

 2.带比较运算符的子查询

 3.带exists的子查询

4.带any关键字的子查询

5.带all关键字的子查询 

四、多表查询优化


一、连接查询

(假设有两张表A,B) 

1.交叉连接(CROSS JOIN) 

语法:SELECT * FROM A,B;

SELECT * FROM A CROSS  JOIN B;

 总结:得到的查询结果是两张表的笛卡尔积,也就是用A表中的每条数据都去匹配B表中的所有数据,获得的结果往往不是我们需要的,一般很少使用交叉连接。

2.内连接(inner join ,inner 可以省略)

2.1隐示内连接

语法:SELECT * FROM A,B WHERE 条件;

2.2显示内连接

语法:SELECT * FROM A INNER JOIN B ON 条件;

 总结:显示内连接和隐示内连接获得的查询结果是一样的,都是A表和B表的交集(例:A.id = B.id),但是只能查到有关系的信息,如果A表的一条数据的与B表关联的字段(如:A.id = null),即:这条数据在B表中没有对应的信息,则无法获得。

3.外连接(outer join,outer可以省略)

3.1左外连接(left outer join,outer可以省略)

语法:SELECT * FROM A LEFT OUTER JOIN B ON 条件;

 总结:左外连接获得的查询结果是左边的表A的全部信息和A,B两张表的交集,左边A表的全部包含A表中在B表中没有对应关系的信息。

SELECT * FROM A LEFT OUTER JOIN B ON A.id = B.id
where B.id is null;

这种场景下得到的是A中的所有数据减去"与B满足同一条件 的数据",然后得到的A剩余数据; 

应用场景:

3.2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值