5 union查询_从零学sql多表查询

一、表的加法,使用union进行连接。需要注意的是:1.UNION 操作符用于合并两个或多个 SELECT 语句的结果集;2.UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。3.UNION将查询的字段合并在一起并自动去重;4.UNION ALL和并结果集的字段以后允许重复;

1a2478c5ee36ab97bb867f9b2b29ab7f.png
union的使用

22f1050705e55183b29b7b8b1dbad006.png
union all的使用

二、表的联结(join),通过表与表之间的列进行联结,你可以理解为点与点的线联结

1交叉联结(cross join)也叫作笛卡尔积,设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.笛卡尔积的符号化为:AxB={<x,y>|x∈A∧y∈B}例如,A={a,b},B={0,1,2},则AxB={<a,o>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>,}BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>},在实际业务中用处并不大,因为所消耗的资源较大,但是它所有联结的基础,其他联结是在其基础上加上了过滤条件,所以也要学习。

2内联结(inner join)类似表中列的交集,

0f443ad6c7cd2f43cb8dcbc37e53a8f4.png

31bc980372afd75dd9edc8b6e17c4cb0.png
on一般和inner join配合使用

3左联结(left join)

d5826a7044b2c9b8e209dde5af382a32.png

94a765a09a8584db910ef108ea348149.png
显示的是左表1

314296548392fb786cda685c066989ab.png
显示左表1减去公共部分

4右联结(right join)

c50f454a9f70f457bd48d2cc0c04acec.png

0d2c2966e6ee63973fb758a99e2d84de.png
显示的右表的全部

6e7c3676cf04ea363e83e3ebe81b64c7.png
显示的是右侧全表减去中间部分,但是可以发现,值为空,这说明左表完全包含于右表

5全联结(full join)

4987a62e3cf3b667fb2a09434ff689f4.png
mysql不支持全连接,作为了解

三、联结应用案例

4d6a277c97b5d1e66b4bcaf08226e494.png

bff35b1f833f6c165c3832720cf5702e.png

672413897ae8af9fb64bd83be74265c2.png

1e87f5df807ef2225a61ee41fdd378c3.png

bd68590585746bafb5b75d6f75f33233.png
三张表的联结

8f95c73e8a3e452076c4b6b4fcbabbfa.png

四、case表达式,用来说明是否满足条件。

08a0fc39ddda5328ad65fe47ea716bcc.png

0832fafbc2ce1582e4c48c5d1e6db80a.png
一定要记得成绩后边的逗号,报错查了半天才发现是逗号的问题

f7c872a10f087d16fc3c19438ca18429.png

03d02ef3a3a84f155e5cf16962b637d6.png

559bd4db0a7909801c72b9fb0b4f429d.png

336b44683fa3fa31b724c71411b1fe00.png

9527a17cd19850c12c07891cffedaa32.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值