数据库的实质,就是一张张表的联结和联系,在SQL中,每个表都设置有一个主键,并且通过主键建立与另一张表的联系,另一张表中又有其主键,再次通过主键建立与另一张表的联系。
多表查询便是建立在主键的基础上的查询方式,主要有以下内容。
- 表的加法
- 表的联结
- 联结应用案例
- Case表达式
- 综合应用
1.表的加法
主要运用语句:union 和 union all
![d9368844366568019b1d9805ab68995c.png](https://i-blog.csdnimg.cn/blog_migrate/cb9c0c051dde907f2ddd9714d8ebac47.png)
union语句把两表之间不同的部分联结在一起,重复的部分,没有被保留,如需保留重复的部分需要使用union all
![3f37a85dbf47325bc2c4dfe1290e8f4d.png](https://i-blog.csdnimg.cn/blog_migrate/4d3211ec6a99facef9ba8cc3ee984a8e.png)
2.多表之间的关系
![8491b75e54b1fb24294d05b25701fe91.png](https://i-blog.csdnimg.cn/blog_migrate/8bca7e82cab738a11ce480d2f627022a.jpeg)
如图所示,各个表之间,通过主键联结到一起。
2.1联结的种类
![e5026b4380a123c5fd05ccd268295e98.png](https://i-blog.csdnimg.cn/blog_migrate/ef2a7284841c627f41baa990f7c8025d.jpeg)
2.1.1交叉联结(笛卡尔积)
![9e42091904918a6639b7197ea08da22b.png](https://i-blog.csdnimg.cn/blog_migrate/dc2e8b96aa0057f22481ab815e96527e.jpeg)
2.1.2内联结(取两表之间主键的交集,inner join)
![8a2cee663205f665958a4a74a76c8738.png](https://i-blog.csdnimg.cn/blog_migrate/e84464a704149331b6719ff3387fc4f0.jpeg)
例子:
![87b112286650126ba41f5cd5feb34522.png](https://i-blog.csdnimg.cn/blog_migrate/b0e25edb46eec4f6f95e333863a8b1e0.png)
2.1.3左联结(left join)
![61f29c0197da8664bdd1d69be51fc342.png](https://i-blog.csdnimg.cn/blog_migrate/dfe83959360fdaac8658392c12364269.jpeg)
例子:
![2d2405a4eeebab665570f812bff862c4.png](https://i-blog.csdnimg.cn/blog_migrate/640313c3e48ce0d7e65c40c1beddb858.png)
查询出现空值的数据行:
![4285adb9d9e5e8df87347b29b4ba01a5.png](https://i-blog.csdnimg.cn/blog_migrate/de30982f54fff29eac75987a7ae31ed4.png)
2.1.4右联结
![c882cef6a7c98418adce6e9ab79eae09.png](https://i-blog.csdnimg.cn/blog_migrate/49adfcd3cc202450ff5cfc8ca79f3fc1.jpeg)
例子:
![38f3652a83c368a3870c3205f48ef77f.png](https://i-blog.csdnimg.cn/blog_migrate/38286a1f0a1526241fe1b2ebbc6e65a5.png)
因为在表score中,学号列只有‘0001’‘0002’‘0003’,而student表中的学号正好有这三个,所以匹配结果没有出现空值,由于是右联结,在输出的学号中需要写成y.学号(图中用红椭圆圈出部分)。
2.1.5全联结
![47b46c54125c00675d250ec8aea8d46f.png](https://i-blog.csdnimg.cn/blog_migrate/1eacee6c6b91a0484699e01beb549cdb.jpeg)
所谓全联结就是取两表特定值的的并集,但由于SQL中,并没有全联结语句,只要理解全联结的含义即可。
3.联结应用案例
3.1查询所有学生的学号、姓名、选课数、总成绩
![00968b6b1bb9476cb762f113974ee02c.png](https://i-blog.csdnimg.cn/blog_migrate/559d393d99ab5fed751945d67681bc17.png)
此处使用左联结,因为只有在student中才包含了所有学生,但王思聪在score中没有对应数据,因此为空值。
3.2查询平均成绩大于85的所有学生的学号、姓名、平均成绩
![eb8bdecfaad99eb78a6f057f2af9b597.png](https://i-blog.csdnimg.cn/blog_migrate/7c7d33d80498918b2a65a29c9d649b4e.png)
3.3查询学生的选课情况:学号,姓名,课程号,课程名称
![c3dd554037acd3c60c89cb6d079a8645.png](https://i-blog.csdnimg.cn/blog_migrate/836ad2adf913ed96954127e5bce9cfbe.png)
4.case表达式
![6b4d603a70eb0b6970c27c33e32aeb6d.png](https://i-blog.csdnimg.cn/blog_migrate/def4f2a1d41959f3f836e07f088c154f.jpeg)
例子:查询每门课程的及格人数和不及格人数
![68d98a93f6c7026eb3887dccb530f489.png](https://i-blog.csdnimg.cn/blog_migrate/2f4842cd4779a74f9173cabbc77b6e5d.png)
例子2:使用分段100-85,、85-70、70-60、<60来统计各科成绩
![9629a0a4f5454574e07371b76c562c25.png](https://i-blog.csdnimg.cn/blog_migrate/ba4ad9b6335ba9bf6c7d7f1729727340.png)
5.综合练习
数据:
![20591ca6566432129fe4b807c177faa2.png](https://i-blog.csdnimg.cn/blog_migrate/29b9800737e9a6dd7f8462f4d4b181d5.jpeg)
练习:
![8818408e31e7709feaad4441bbadc642.png](https://i-blog.csdnimg.cn/blog_migrate/392567badb63926e85e5adda8794abef.jpeg)
![cd89203353e3509ef56b90b8fe784772.png](https://i-blog.csdnimg.cn/blog_migrate/e3e9804e84f0936ded0b93213c3667b4.jpeg)
![bdac8a77ffc83543066818b2f7177dad.png](https://i-blog.csdnimg.cn/blog_migrate/47ad233684dcd1f4255884674fd4a78c.jpeg)
![39f20fc121c78560bb3c17c3365a7bed.png](https://i-blog.csdnimg.cn/blog_migrate/780e0a4e1518530599d7f1dda94d05c8.jpeg)
![87a161f798eb4ec014aaa0151d493bf3.png](https://i-blog.csdnimg.cn/blog_migrate/8852fa3ff69c12b783b07473285f3e38.jpeg)
![f33c4a1b8a57133c0730a5c3ec82cf5b.png](https://i-blog.csdnimg.cn/blog_migrate/6cd8835e81c6a8dc822c3d2f4f994ef5.jpeg)
![f60085d2732c932653ae0cbf6d4b8d2e.png](https://i-blog.csdnimg.cn/blog_migrate/7fce393ddfe47f179c88c36d714e2c2a.jpeg)
![7b532540d39b9c0376dd1e55ce60da4f.png](https://i-blog.csdnimg.cn/blog_migrate/dc2eaf3049f47d2658385d9eecd6e796.jpeg)
![3dd0b54b05cf6a428ec95232d38102d6.png](https://i-blog.csdnimg.cn/blog_migrate/648f82ab08fbb9f6c01e808115086b75.jpeg)
![755b7959df12dac500533ddcc3ae72fd.png](https://i-blog.csdnimg.cn/blog_migrate/e9fcc2531be55107316b31f053557862.jpeg)
![998f1e589b4d4886668509c39d8f5d56.png](https://i-blog.csdnimg.cn/blog_migrate/02354318be3b7a6691073f795bc1afba.jpeg)
![9aac159ecce8ebc11aafa01201830c3e.png](https://i-blog.csdnimg.cn/blog_migrate/c95826270eb21d32de0656c3a02cdb4f.jpeg)