![2e227dd905a333879a0c503532668b8a.png](https://i-blog.csdnimg.cn/blog_migrate/c274d27cd7eb1e6691645f6429b0dced.jpeg)
本章通过实战练习,演示如何进行SQL常见查询类型的应用。
一、简单查询
创建学校数据库的四张表:
![fe0303fa71ba509e5ca841988a68f5b5.png](https://i-blog.csdnimg.cn/blog_migrate/d17305a38f6e618dce388890bc380f78.jpeg)
在navicat图形端创建四张表结构如下:
![eb028bf8eb0129b693568cc4ecfbe8ef.png](https://i-blog.csdnimg.cn/blog_migrate/6729a8654202b2001a6046ef5af1bc12.png)
![d82647867b3a475069b0c7d81c77d0d4.png](https://i-blog.csdnimg.cn/blog_migrate/bee9aa76a83081dc5766793c832d1071.png)
![29972f7485c84f79633f6a92a74fa2ba.png](https://i-blog.csdnimg.cn/blog_migrate/4ff3599348cf88512da88f6768960ba4.png)
![1caaf9fd9aaa255896847cf1f4d7c220.png](https://i-blog.csdnimg.cn/blog_migrate/4722681f70d89a69167004214cef6eeb.png)
导入数据之后结果如下:
![5f0418bcca85f9dd63d1c6e7e1a3ced4.png](https://i-blog.csdnimg.cn/blog_migrate/f7ff06e95fb35ac6baa5cc8e85f7449c.jpeg)
练习:
1、查询姓“猴”的学生名单。
2、查询姓名中最后一个字是“猴”的学生名单。
3、查询姓名中带“猴”的学生名单。
SQL语句:
![38151d04532e8b211688cb8bd0d3c93b.png](https://i-blog.csdnimg.cn/blog_migrate/448480baefb5cb5292394eaf581bbb57.png)
![7d652c2f6d5ad660066080f4c863bae0.png](https://i-blog.csdnimg.cn/blog_migrate/ecb43a5caa549b4b605bc82c95711985.png)
![7d56ae8f84418ee2b20089e5f0bd58bd.png](https://i-blog.csdnimg.cn/blog_migrate/494040cbe6563eed6f3d18a1d236b89e.png)
结果:
![63730565c54423ee9b2c07918c90e3f3.png](https://i-blog.csdnimg.cn/blog_migrate/674ca341923f2196e582e04370dcb0e6.png)
![2caebaf314a4c1c212c9bf018509ef1e.png](https://i-blog.csdnimg.cn/blog_migrate/31e32d0eb6345b7997d5cac6a1b13a06.png)
![53adfff8269ea748568be306acd9dce6.png](https://i-blog.csdnimg.cn/blog_migrate/48ff6cdc3f0ddc9bd393e8eef24d81e3.png)
4、查询姓“孟”老师的个数
![c64e4a71ff1d6d4e6e7d4500b77be343.png](https://i-blog.csdnimg.cn/blog_migrate/c9d4d5454b5b0348d4aa94c6a65ff816.png)
结果:
![dc81e6a5a6eebe0d68261dce17aba769.png](https://i-blog.csdnimg.cn/blog_migrate/20a4fdaac87cba7c75809ff372df8629.png)
二、汇总分析
1、查询课程编号为‘0002’的总成绩
2、查询选了课程的学生人数
1、SQL语句:
![c195a1314b451acd85068b403b7d2892.png](https://i-blog.csdnimg.cn/blog_migrate/da81cc2778bfe7f721f99ceaa429b22d.png)
结果:
![0e7cc5d470cabd42ea5be952eab3d378.png](https://i-blog.csdnimg.cn/blog_migrate/9ee36cdb87f9cd9b55bc3575238d7955.png)
2、SQL语句:
![335c7c8dfb7e31ced98d3e68263749b8.png](https://i-blog.csdnimg.cn/blog_migrate/3fbdd7e2d0d219a9f390701d1c163116.png)
结果:
![d305b1d71c2bd3e1370210f04e4fe8fb.png](https://i-blog.csdnimg.cn/blog_migrate/44811212465376efdc0bc384b39d744e.png)
分组练习:
1、查询各科成绩最高和最低分
2、查询每门课程被选修的学生数
3、查询男生、女生人数
1、SQL语句:
![45388a9fb884234c7b202073d7b47b59.png](https://i-blog.csdnimg.cn/blog_migrate/a3b23f00615d9dc8b8aa5af8f8634640.png)
结果:
![4ba9df68864d313bb0bec9c4d9f6b422.png](https://i-blog.csdnimg.cn/blog_migrate/d6d986d88bc8c67036163b8e5bbfafa6.png)
2、SQL语句:
![b74e603a23ee87684db3a0773c027230.png](https://i-blog.csdnimg.cn/blog_migrate/74a23d7e50717246687ac71efeab3ce7.png)
结果:
![dd6bf5701e423fc5fd5f2bdc6e702172.png](https://i-blog.csdnimg.cn/blog_migrate/dd717be71c4d56af377d479f38f9710c.png)
3、SQL语句:
![d28d3458e9b514ee13b841da7add16f7.png](https://i-blog.csdnimg.cn/blog_migrate/17a16330d368124297579e7e742ad000.png)
结果:
![b1374b2e79f9408c923f5bf52dc78100.png](https://i-blog.csdnimg.cn/blog_migrate/14fc502f44cc4fe36f55e85f8c8bd6a5.png)
分组结果的条件:
1、查询平均成绩大于60分学生的学号和平均成绩。
2、查询至少选修两门课程的学生学号。
3、查询同名同性学生名单并统计同名人数。
4、查询不及格的课程并按课程号从大到小排列
5、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列。
6、检索课程编号为“0004”且分数小于60的学生学号,结果按分数降序排列。
7、统计每门课程的学生选修人数(超过2人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
1、SQL语句:
![5eb47bcbd70ec91c20c264c9a2d64c98.png](https://i-blog.csdnimg.cn/blog_migrate/baa3c537a6abf5a9464555a63a80ea7d.png)
结果:
![e6e002ef77496ea1048f9c70f48aa0c4.png](https://i-blog.csdnimg.cn/blog_migrate/f74fd2d7f64c188f2ef713d72a1b329e.png)
2、SQL语句:
![361bbf58532247b471355ee5ccf2072f.png](https://i-blog.csdnimg.cn/blog_migrate/c5443eca2f8bef77efb57ff74f28c6af.png)
结果:
![aa26e3870f845419e1058815e2386810.png](https://i-blog.csdnimg.cn/blog_migrate/8e10daceb983e559e820d923ae9c6367.png)
3、SQL语句:
![c80aa7ad2b996f81fc9b6ce5bcad9459.png](https://i-blog.csdnimg.cn/blog_migrate/33081eae7e086f368c8090fe6d04221c.png)
结果:
![8521a8c49a1fbe0984441c72cc48fcea.png](https://i-blog.csdnimg.cn/blog_migrate/e0ba6c313221825d32262ec181b18349.png)
4、SQL语句:
![e32618789c5a42149b6d5ec1892eecf2.png](https://i-blog.csdnimg.cn/blog_migrate/a1322b2cdc255063f2c90d2daccf55af.png)
结果:
![8699e32ef8ccb477f9e872747157ec01.png](https://i-blog.csdnimg.cn/blog_migrate/df234b742f7d6d634283f78a97ec28bc.png)
5、SQL语句:
![8470f45986b0db7449a0a2064c7fe2e4.png](https://i-blog.csdnimg.cn/blog_migrate/9df5fc569d3053585872062a6fcc858e.png)
结果:
![251a94b6b84fe509b5761b959c362ca0.png](https://i-blog.csdnimg.cn/blog_migrate/30b8cbc7ae4933a20dd79dd74f9a7549.png)
6、SQL语句:
![4e5d6f34e37bbf773257169b591dd155.png](https://i-blog.csdnimg.cn/blog_migrate/cf5626e39b47d972579a10ad924817b2.png)
结果:
![c8c313fcd7761950b79b31b2c34d0adb.png](https://i-blog.csdnimg.cn/blog_migrate/e5343b9cd6a07fb2ed9994288515033b.png)
7、SQL语句:
![04ac0761d0b72212bd002bf3b6aeb09b.png](https://i-blog.csdnimg.cn/blog_migrate/15410588ac4c69566898c1aacc8e417a.png)
结果:
![386a45db31f966b2671520a6bf8077dd.png](https://i-blog.csdnimg.cn/blog_migrate/f64fe8d5f3e5c032d1003dab1bd2df10.png)
三、复杂查询
1、查询所有课程成绩小于60分学生的学号、姓名。
![7fda0680f5869e527bc2c747294a4e46.png](https://i-blog.csdnimg.cn/blog_migrate/c14913beb4312c0e31ee36dc0e1feaff.png)
结果:
![0a85020038c39a6e21ddf8c0f96511c4.png](https://i-blog.csdnimg.cn/blog_migrate/d4f7de532e9a84ebef3fc3498d913ff7.png)
2、查询没有学全所有课的学生的学号、姓名
SQL语句:
![f657a44fbe6ec927efb1c60a6264376e.png](https://i-blog.csdnimg.cn/blog_migrate/eb91d4cadfd4274508764003bf7ff452.png)
结果:
![4cac35882c99270c7b7bd31aa0742b2a.png](https://i-blog.csdnimg.cn/blog_migrate/4ff5bc4625b1e8330b251a5b10c528f6.png)
3、查询只选修了两门课程的全部学生的学号和姓名
SQL语句:
![899a3f8cef74082ed3c04638e7c6ee05.png](https://i-blog.csdnimg.cn/blog_migrate/aff2cd3b745d73038840a0d310805b97.png)
结果:
![d5644a90fa3a68a69fc1e6c10a7731ad.png](https://i-blog.csdnimg.cn/blog_migrate/0b9f455c2c1cd9fead991709eaa5746f.png)
4、1990年出生的学生名单
![fd9dc9f469ee011a08f3d58467caeaed.png](https://i-blog.csdnimg.cn/blog_migrate/3d237859b60e7781a85b55ab77b606db.png)
![3c2538e9389f7aab486a9bdd397546fa.png](https://i-blog.csdnimg.cn/blog_migrate/e1cadf4efe5908cf0a24b1bd75cae939.png)
5、查询各科成绩前两名的记录
四、多表查询
![259d3f9ecff2dfa54c0c60fa19212c79.png](https://i-blog.csdnimg.cn/blog_migrate/a174cd6d8558ca4138ff405eff207108.jpeg)
学生表和近视表,请问不是近视眼的学生都有谁?
![476d7d3faf02cf72b40a83ffd67ec81e.png](https://i-blog.csdnimg.cn/blog_migrate/546a48892b967721101eba8dec17fa02.png)
![37836399543fc48d99f5c064eb310892.png](https://i-blog.csdnimg.cn/blog_migrate/e96ae13522c7530ec74e36e85c6acd6b.png)
还有一种做法:
![c961d478f33955c3d25fbf9127406d24.png](https://i-blog.csdnimg.cn/blog_migrate/a051071b150dd6104e5f515797c61f25.png)
也能得到如下结果:
![942c8994d44dc6c225b0cd43ee7904fd.png](https://i-blog.csdnimg.cn/blog_migrate/625126ca06d19e253902ce4917bdf0b3.png)
2、根据顾客姓名表和购买记录表,查找所有从不订购任何东西的客户
![a94fcb3250f603e21304883406aeaa95.png](https://i-blog.csdnimg.cn/blog_migrate/e753a04e49cd465ea2e182ce80d69e08.jpeg)
SQL语句:
![396bacbd0f6a76155a5a18cee67f4759.png](https://i-blog.csdnimg.cn/blog_migrate/a496d2197856b90b9a3dbe3f3f3bb4e6.png)
结果:
![851fd5853c34d93b747a4f3006cce4d0.png](https://i-blog.csdnimg.cn/blog_migrate/d5c0eb591658d1f73c1cff01d5e26c94.png)
查询所有学生的学号、姓名、选课数、总成绩
![dc6ba2675f81aad4a5136605cdeae29d.png](https://i-blog.csdnimg.cn/blog_migrate/53020126752384f3d1fcdf67e4384d44.png)
![274e5e5d3d9b0bbd6af99564bb39897f.png](https://i-blog.csdnimg.cn/blog_migrate/fdb9e79c174a45f1c6cc20a4665b11af.png)
查询平均成绩大于85的所有学生的学号、姓名和平均成绩
![2a565031656167a3e80ba95f391ad11a.png](https://i-blog.csdnimg.cn/blog_migrate/3ded70fe76fcacada9db7c4bdab1992f.png)
![05bb2709a40d0c283320cba1c192d07d.png](https://i-blog.csdnimg.cn/blog_migrate/57b7346fa6f02c023f4678a73fccb6f7.png)
查询学生的选课情况、学号、姓名、课程号、课程名称
![5e9759a01f5549a88143e8da8dc74c13.png](https://i-blog.csdnimg.cn/blog_migrate/6dcb9a75994f76ed2a3ab53d6b3ab022.png)
![f45e27174e3c07fae18ef7681a9cf618.png](https://i-blog.csdnimg.cn/blog_migrate/9b2f4e9b8bde50501c0730d38b525772.png)
查出每门课程的及格人数以及不及格人数
![56521af63a1a270952c7b68e348f5209.png](https://i-blog.csdnimg.cn/blog_migrate/f2bb49ac72866d227c4f181f5ad87bd4.png)
![8354cae8f5603f10a0dd4efef434cad7.png](https://i-blog.csdnimg.cn/blog_migrate/1a8c333f7655c9b44d5b1288191e74b4.png)
使用分段【100-85】,【85-70】,【70-60】,【<60】来统计各科成绩,分别统计:各分段人数,课程号和课程名称
![22fe62d4c651f0c5f165173015e82312.png](https://i-blog.csdnimg.cn/blog_migrate/154cb235ef66ff6e17f6e86da97f3735.jpeg)
![b9eb387a0818c1abc4e0dd71fb65ca8c.png](https://i-blog.csdnimg.cn/blog_migrate/bf6a4feefe583bf642f94bd4a50979b3.png)
查询课程编号为0003且课程成绩在80分以上的学生的学号和姓名
![dbeb7daaf3157f61a56db3bf4e58fbbc.png](https://i-blog.csdnimg.cn/blog_migrate/ca34d935fbab6d0bee6ab4a8779563a9.png)
![fd4f61a0b77e7ee80c686194119c27f2.png](https://i-blog.csdnimg.cn/blog_migrate/eeab1ff9e32ce822abea21d33b643ae8.png)
下面是学生的成绩表,表名为score,列名:学号、课程号、成绩
![fa5d77eed93a40d26f51f02809be3f5a.png](https://i-blog.csdnimg.cn/blog_migrate/924161f4f6055a84d21199eacaaa2177.jpeg)
使用SQL实现将该表行转列为下面的表结构:
![92e9ba8d9456b786dcd727f92cc14309.png](https://i-blog.csdnimg.cn/blog_migrate/6c9babef146ebed63da0350e5916b6f4.png)
SQL语句:这道题的意思是,从学生表中查找出每个学生每门课的成绩。结果按照学号分组。
![a11b021c843970c412b9e44c0d518e9d.png](https://i-blog.csdnimg.cn/blog_migrate/9d3799954d040d179d1d80bc4308ef18.png)
![aa90b2dbe3dc67a90eb2e0176e6d0a07.png](https://i-blog.csdnimg.cn/blog_migrate/f5f2fa58e9dba4bf1583532cdc2748d8.png)
结论:本篇文章采用实战形式,系统整理了常见SQL查询解题,主要包含简单查询、汇总分析、复杂查询和多表查询。SQL熟练度随着练习增多,而逐渐提升。另外要总结常见题目的解题思路。本章有一个遗憾,就是关于分组并计算每组里面topN这个问题,还没有找到好的解题思路,留作后续继续探讨。