![b1172d409f4214e245cc55d71c52f531.png](https://i-blog.csdnimg.cn/blog_migrate/ef3be4e46b764e8c9ee481c281d29f38.jpeg)
一、表的加法(union)
- 将两个表的数据按照行合并在一起,并且重复值只保留一个
SELECT
![9f80596d008879df304626a5b74a183b.png](https://i-blog.csdnimg.cn/blog_migrate/341c26d07ef65e4edaa89df09e7e8d52.jpeg)
- 如果想保留两个表中的重复值,那么使用union all,那么重复值语文课程就被保留下来了
SELECT
![23eb21d529820d79ad187e2b1efefbe0.png](https://i-blog.csdnimg.cn/blog_migrate/ea04a52390b24117c0cbc1611e1481be.jpeg)
需要注意的是:这里的重复指的是课程号和课程名称完全一致,教师号是否重复不影响查询结果,因为我没有查询教师号这一列。
二、表的联结
下面四个表通过学号,课程号,教师号这三列进行表与表之间的联结
![025b11a3cf7bc1835f4fd424c276011f.png](https://i-blog.csdnimg.cn/blog_migrate/dded753c5441d2ccad583855a858476f.jpeg)
- 交叉联结,也叫笛卡尔积(cross join)
表中的每一行与另一个表中的每一行合并在一起,产生的行数是两个表行数的乘积,它的数据产生如下图所示:
![5ec670e90bc301bd6e6c3964243b2271.png](https://i-blog.csdnimg.cn/blog_migrate/f35d1b7b8883311269d940224ddb1379.jpeg)
一般来说,我们很少用到这个语法,因为运算后的数据量会非常大,影响设备的性能和效率,其结果也没有实际的价值,但是这个知识是下面联结知识的基础。
- 内联结(inner join)—查找出同时存在于两张表的数据
![176a0e204ad22edbee3073075c04eac7.png](https://i-blog.csdnimg.cn/blog_migrate/ded006cbb6ff5c002aa7533c45b529c5.jpeg)
![2327098bc9fdb6578250b5e2382e506e.png](https://i-blog.csdnimg.cn/blog_migrate/a09753c8c1e31cd28778d6b480985590.png)
实例1:student表和score表进行内联结
SELECT
![2b8e39a670de182b8d5f0b9a461ea6d4.png](https://i-blog.csdnimg.cn/blog_migrate/22d866666a0c1f42e1661c3bd6918940.jpeg)
- 左联结(left join)—取出左边表的全部数据,右边的表选出与左边相同数据的行,然后进行数据合并
![ab65663d901c768feed3a4db644d19b6.png](https://i-blog.csdnimg.cn/blog_migrate/14008acb228b49e8c1d59228f1b6769b.jpeg)
![ff00733855310d66f0870e15f118768d.png](https://i-blog.csdnimg.cn/blog_migrate/4ccdbce1dd1c8f23e82988c111399978.png)
实例2:student表和score表进行左联结
SELECT
![51aa80042369d860031d985ce7546bdc.png](https://i-blog.csdnimg.cn/blog_migrate/5c68117a1a31490ca060f3fa2ef75c30.jpeg)
实例3:如果我想查找在左表中有而在右表中没有的数据,如下图显示:
![87edc0acdca23a839ba90ae38d804db0.png](https://i-blog.csdnimg.cn/blog_migrate/709da05abebbb914c4c44a96aa9bd931.jpeg)
SELECT
![d6f97ab900ed7707c003158f713c4117.png](https://i-blog.csdnimg.cn/blog_migrate/ce920909c812e12737f11135a538cee1.jpeg)
- 右联结(right join)—取出右边表的全部数据,左边的表选出与右边相同数据的行,然后进行数据合并
![ddd3c62e2d8df6d84d053a36425b5de1.png](https://i-blog.csdnimg.cn/blog_migrate/d874c2b614c819b8521e51e8587061c1.png)
实例4:student1表和score1表进行右联结
SELECT
![f4d61e406bff765aaa069e1512d99c13.png](https://i-blog.csdnimg.cn/blog_migrate/3314267cc6479b2a347c39b859a8a201.jpeg)
实例5:如果我想查找在右表中有而在左表中没有的数据
SELECT
![fc3005930ee4fe7f80f98f6311e63c15.png](https://i-blog.csdnimg.cn/blog_migrate/ce10f60d21c24c3b23343e015656042f.jpeg)
- 全联结(full join)—取出左表和右表的所有数据,有相同数据就合并,没有则用Null来填充
![b7bdefafbc8f759a8d9c79727e27f9eb.png](https://i-blog.csdnimg.cn/blog_migrate/ab54ed1bdbf0df346e0917982080f5b0.jpeg)
![4ad20fcbce77e287e1ebcdb57332a083.png](https://i-blog.csdnimg.cn/blog_migrate/71c2116b57a256d5ecaa6fb9a562c3cf.png)
注意:MySQL是不支持全联结的,我们了解这个概念就可以了
三、联结应用案例
案例1:查询所有学生的学号、姓名、选课数、总成绩
SELECT
![debb026898082702fd88446efe7e5ae7.png](https://i-blog.csdnimg.cn/blog_migrate/0e01d181b40bbb4cb3a72fbbc469e7b2.jpeg)
案例2:查询平均成绩大于60的所有学生的学号、姓名和平均成绩
SELECT
![e0cc75d7fd07484d7faf7719c735bef3.png](https://i-blog.csdnimg.cn/blog_migrate/523f3362a4de1de4881af6a505b852e0.jpeg)
案例3:查询学生的选课情况
SELECT
![4770b9031c2e7d04639119ce5bfead01.png](https://i-blog.csdnimg.cn/blog_migrate/4d039ce7d3f167afaa16274ab646703c.jpeg)
四、case表达式—相当于条件判断函数
CASE
实例1:查询score表中学生的成绩是否及格
SELECT
![bc34cdcbd5d40683e11a76dcb2c47a0c.png](https://i-blog.csdnimg.cn/blog_migrate/442bdaa6091c1ddd6005cd26b68c7d77.jpeg)
实例2:查询出每门课程的及格人数和不及格人数
SELECT
![120f4db08f9e64c1ca1fa2c26a10cfbd.png](https://i-blog.csdnimg.cn/blog_migrate/1e5ffea4268cbb24f887ec52ce2cbc22.jpeg)
实例3:使用分段[100-85],[85-70][70-60],[<60]来统计各分段人数,课程号,课程名称
SELECT
![edf2d98e0aefa5f2f52c29eefb93ac7c.png](https://i-blog.csdnimg.cn/blog_migrate/2d1f33e8deeb345b3f634279c981bdb5.jpeg)
注意:case语句可以写在任意一个子句中
欢迎大家看看我写的其他MySQL基础知识系列文章,希望对你们有所帮助!
1、MySQL基础入门知识
假装在念书:MySQL基础知识—入门篇zhuanlan.zhihu.com![49d7539a807dea4467dd18049c2d028a.png](https://i-blog.csdnimg.cn/blog_migrate/7f885cee1ec3f6154bea1b2fbcdef4b2.jpeg)
2、MySQL基础知识—简单查询
假装在念书:MySQL基础知识—简单查询zhuanlan.zhihu.com![49d7539a807dea4467dd18049c2d028a.png](https://i-blog.csdnimg.cn/blog_migrate/7f885cee1ec3f6154bea1b2fbcdef4b2.jpeg)
3、MySQL基础知识—汇总查询
假装在念书:MySQL基础知识—汇总查询zhuanlan.zhihu.com![49d7539a807dea4467dd18049c2d028a.png](https://i-blog.csdnimg.cn/blog_migrate/7f885cee1ec3f6154bea1b2fbcdef4b2.jpeg)
4、MySQL基础知识—复杂查询
假装在念书:MySQL基础知识—复杂查询zhuanlan.zhihu.com![49d7539a807dea4467dd18049c2d028a.png](https://i-blog.csdnimg.cn/blog_migrate/7f885cee1ec3f6154bea1b2fbcdef4b2.jpeg)
五、实践出真知
现在我们打开SQLZOO网站:https://sqlzoo.net/wiki/The_JOIN_operation/zh
开始习题练习,进行查询语句的练习。
第一题代码:
SELECT
![122eddebbb579cd66bc9729d0d8b5b64.png](https://i-blog.csdnimg.cn/blog_migrate/bfba3147b3bb66184aa686c974c55bf0.jpeg)
第二题代码:
SELECT
![424a142222b9fd24f7623e4e0d113ee7.png](https://i-blog.csdnimg.cn/blog_migrate/626b10154283181619631be8bbc13e19.jpeg)
第三题代码:
SELECT
![730120c1407c0d5508a39aa4bc8f78e1.png](https://i-blog.csdnimg.cn/blog_migrate/6a3e72e76a5a4d06427dd184b0463a8b.jpeg)
第四题代码:
SELECT
![fc486e07f94ce93fdb9d7fbd96b4c9bd.png](https://i-blog.csdnimg.cn/blog_migrate/5c53895476cccf6638f917099dbf0d57.jpeg)
第五题代码:
SELECT
![ac84fadcb5d6336b4165dfc1a9fbdf02.png](https://i-blog.csdnimg.cn/blog_migrate/471197c7936774c5a0cc32a20e934c5f.jpeg)
第六题代码:
SELECT
![361d9f0d8a20e86c10a8811e99faad5f.png](https://i-blog.csdnimg.cn/blog_migrate/1db869ea0563f45160cc7ac574ef2b3b.jpeg)
第七题代码:
SELECT
![9c4cc1bd64c1a5481d16bd01fd5115c0.png](https://i-blog.csdnimg.cn/blog_migrate/c3d186f9453a683b1712623dd2cb852d.jpeg)
第八题代码:
SELECT
![b11319ab723d1cdb6413d2b8dba67bcc.png](https://i-blog.csdnimg.cn/blog_migrate/89fd98ac8a77ff7d491230ca6a503ea5.jpeg)
第九题代码:
SELECT
![4aa60065021321fafb6f600afb3e3be7.png](https://i-blog.csdnimg.cn/blog_migrate/4bb2864078026d64a7126a30881e2a20.jpeg)
第十题代码:
SELECT
![e3038f11711e4cf4f7c55a1ecf21430c.png](https://i-blog.csdnimg.cn/blog_migrate/63a4adaec7064f06d8f1e1d1458eccdd.jpeg)
第十一题代码:
SELECT
![bf8509d87f49cd5264d1d0cb4096dfdd.png](https://i-blog.csdnimg.cn/blog_migrate/fa99793fda157d18eed8eb0a1146d64d.jpeg)
第十二题代码:
SELECT
![f4c6e09190cf0582c3aba43c131fd06a.png](https://i-blog.csdnimg.cn/blog_migrate/ad1a8a33d23ab70025e2b98e939d81d0.jpeg)
第十三题代码:
SELECT
![ffaca5a62ac7bf4cfd0a940efa0eb8fb.png](https://i-blog.csdnimg.cn/blog_migrate/3cc440cd718233e8f5605d08074ac4c8.jpeg)