一、简单查询
- 查询姓“猴”的学生名单
![451d6d88656fe8e8ca306d44c7e4fece.png](https://i-blog.csdnimg.cn/blog_migrate/0babfa079aa9c1a23081f754a705db43.jpeg)
2. 查询姓名中最后一个字是“猴”的学生名单
![20bb505cb7bbad4a95ea0c0420888e5e.png](https://i-blog.csdnimg.cn/blog_migrate/6c46a767ac477d2c8b212c8341adee73.png)
3. 查询姓名中带“猴”的学生名单
![c810900a0ed15e68800b8f3d39cee6d3.png](https://i-blog.csdnimg.cn/blog_migrate/b757b13e9b5d685eb2325f96d5c17e3a.png)
4. 查询姓“孟”老师的个数
![319823514ecfefd8f5230872978312a6.png](https://i-blog.csdnimg.cn/blog_migrate/cce9a7fea1ffa11f2d67d86973c56305.png)
二、汇总分析
1.查询课程表编号为“002”的总成绩
![cea5d32fa60dabd0371c9421faad493f.png](https://i-blog.csdnimg.cn/blog_migrate/ef1901c5e42db26aa4ab715beb865551.png)
2. 查询选了课程的学生人数
![a2078f7ab2c4e2ced631cd63511ce741.png](https://i-blog.csdnimg.cn/blog_migrate/15789cd88ce0460335b4fc7bc3aa350c.png)
3. 查询各科成绩最高和最低分数
![7dd04a4dc9603b9288e6a66f7aed87aa.png](https://i-blog.csdnimg.cn/blog_migrate/4ff31e509034f19ab755b26ff1ebd819.jpeg)
4. 查询每门课程被选修的学生数
![3fb4db17678b6d03fc9f66255c4a2061.png](https://i-blog.csdnimg.cn/blog_migrate/99465c19f105a4db4a71686da01c52b4.png)
5. 查询男生、女生人数
![3fb4db17678b6d03fc9f66255c4a2061.png](https://i-blog.csdnimg.cn/blog_migrate/99465c19f105a4db4a71686da01c52b4.png)
6. 查询平均成绩大于60分学生的学号和平均成绩
![2c71733250d0ca168c8752da4d2ece23.png](https://i-blog.csdnimg.cn/blog_migrate/8cf260228899c51ba0b31ab48fad8252.jpeg)
7. 查询至少选修两门课程的学生学号
![e6f96372489fb16641924b1972b0d1fc.png](https://i-blog.csdnimg.cn/blog_migrate/192a5593a4b30824c79601d72989ff73.jpeg)
8. 查询同名同姓学生名单并统计同名人数
![9a21bebc831ab98b8256c4597a8ba5d9.png](https://i-blog.csdnimg.cn/blog_migrate/4108ebf27cbc3402871769105f1c2029.png)
9. 查询不及格的课程并按课程号从大到小排列
![469059cf03f502521027d4136383ab47.png](https://i-blog.csdnimg.cn/blog_migrate/bc5f4f5891adcd4a5a885c4d80e00cdd.png)
10. 查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列
![cfc3a5f65f90386f9479b6e5eb88831d.png](https://i-blog.csdnimg.cn/blog_migrate/5362fb46aba48ddc05730c4a93f31ca3.jpeg)
11. 检索课程编号为“0004”且分数小于60的学生学号,结果按分数降序排列
![22f184511e66a8924286abd413983cbb.png](https://i-blog.csdnimg.cn/blog_migrate/f76cc02f8b5d9f6fb28d7885294fd7a1.png)
12. 统计每门课程的学生选修人数(超过2人的课程才统计)
要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序
![50e6b5acac4f18d220bc8e79281f4fc2.png](https://i-blog.csdnimg.cn/blog_migrate/f2ff1e188d3fffe0d58aa1a2241a2435.jpeg)
13. 查询两门以上不及格课程的同学的学号,以及不及格课程的平均成绩
![f49a3fcaf208f911043c0effe9779e7b.png](https://i-blog.csdnimg.cn/blog_migrate/26f2a37bd32117497bcd937db599acba.png)
三、复杂查询
1.查询所有课程成绩小于80分学生的学号、姓名
![4245a78d2f906875572f5e66dbbb2551.png](https://i-blog.csdnimg.cn/blog_migrate/2591246c20535ca27be5559ad10d7c17.jpeg)
2. 查询没有学全所有课程的学生的学号,姓名
![b3cbbd96bdda626628393830b19843a5.png](https://i-blog.csdnimg.cn/blog_migrate/60a91228163fb732ffcdce8921b9e53e.jpeg)
3.查询只选修了两门课程的全部学生的学号和姓名
![d37b8ebb6b04b65ac03288cf4018ed42.png](https://i-blog.csdnimg.cn/blog_migrate/f90d5615604bd6a6d02c8180b099f07f.jpeg)
4. 1990年出生的学生名单:
![7a253a05c42513f4b4556f143550b9e2.png](https://i-blog.csdnimg.cn/blog_migrate/971d2d4668f4a066955fb327d6a62975.jpeg)
5. 按课程号分组取成绩最大值所在行的数据
![cd798fb3cb6d711c874e8b8c8ba55bb9.png](https://i-blog.csdnimg.cn/blog_migrate/40892a0b9ac4af4f10466e8a939a8c04.jpeg)
6. 按课程号分组取成绩最小值所在行的数据
![833ed851d6385b8807f7195b991aa1a1.png](https://i-blog.csdnimg.cn/blog_migrate/807b12e53bd19ecacb4f40a5ffec832c.jpeg)
7.查询各科成绩前两名的记录
![7912e7f9818cf7069612716d9decbf51.png](https://i-blog.csdnimg.cn/blog_migrate/4ed7490ee0f5e1b458e685af32577f77.jpeg)
四、多表查询
- 查询所有学生的学号、姓名、选课数、总成绩
![503e8a96b78df16c7a7fcc0ae1efb59f.png](https://i-blog.csdnimg.cn/blog_migrate/0707d27d887f57d06f05f26fd4c2e6a5.jpeg)
2. 查询平均成绩大于85的所有学生的学号、姓名和平均成绩
![d1d781a502998d9af1aa2bc80e909179.png](https://i-blog.csdnimg.cn/blog_migrate/7b7442fcdbe2ed28906ba65e03833a1b.jpeg)
3. 查询学生的选课情况:学号,姓名,课程号,课程名称
![db160a0d6291e1c8a2b7b7a4e1e583d9.png](https://i-blog.csdnimg.cn/blog_migrate/dd854b2157a7cf18a805363625965f93.jpeg)
4. 查询每门课程的及格人数和不及格人数
![c4baa7ea72c12378818a12bbfbfb6b04.png](https://i-blog.csdnimg.cn/blog_migrate/cbef76f075ca33ab77e9b4e2b533c1a0.jpeg)
5. 使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分段人数,课程号和课程名称
![893d99a235e1c7ccae7713811c7afaad.png](https://i-blog.csdnimg.cn/blog_migrate/fee708b7eaf26b9507beca58bc0fa2b6.jpeg)
6. 查询课程编号为0003且课程成绩在80分以上的学生的学号和姓名
![29b78c1841ff1e76de7fbc0ea1b43c15.png](https://i-blog.csdnimg.cn/blog_migrate/cf835f5a3baf012d9391f6524b397a75.jpeg)
7. 行列转换
![c6389f7f3f3842a28c03945ab208d5a2.png](https://i-blog.csdnimg.cn/blog_migrate/7cb47890e25ad544a6ac34add2ff7042.jpeg)
五、如何提高SQL查询效率
- select 子句中尽量避免使用*
- where 子句比较符号左侧避免函数
【例】where 成绩+5>90 变为: where 成绩>90-5
3.尽量避免使用 in 和not in
【例】where 学号 in (8,9) 变为:where 学号 between 8 and 9
4. 尽量避免使用or,优化为union
【例】
select 学号
from 成绩表
where 成绩=88 or 成绩 = 89;
优化后:
select 学号
from 成绩表
where 成绩=88
union
select 学号 from 成绩表 where 成绩= 89;
5. 使用limit子句限制返回的数据行数