一:记住
1.sql语句select、group by、order by、where一般先后顺序
例如:
2.实战前注意事项
2.1、where和group by都是基于整个表查询
2.2、having后一般加聚合函数,select后最好加上having后聚合函数中的列名
2.3、where语句中不能包含聚合函数
2.4、子查询中不能包含order by,但可以包含group by
2.5、只有where语句是对符合条件的行进行计算,其他的语句都是对列进行计算
3.练习
此练习基于上一篇文章(Mysql创建库、表、插入数据)创建的4张表来做练习。
4张表数据内容
1、查询学生表的所有记录
2、查询教师表中所有不重复的系名
3、查询教师表中每个系有多少个老师
4、查询成绩在60到80之间的所有记录
5、查询成绩为85,86,88的记录
方法一:
方法二:
6、查询95031班级或性别为女的同学的记录
7、查询95033班和95031班全体学生的记录(注意:用or:[并且]而不是and[交集])
8、查询所有不姓王的同学记录
9、以sclass降序查询所有学生记录
10、以cno升序,degree降序查询score表的所有记录.
11、以班号和年龄从大到小查询学生表的全部记录
12、查询95031这个班的学生人数
13、查询最大和最小sbirthday日期值
14、查询存在85分以上成绩的课程编号
15、查询成绩表中最高分的学号和课程号
注意:聚合函数不能放在条件查询语句(where)中,只能放在select后面
16、查询3-105号课程的平均分
17、查询至少有5名学生选修并且以3开头的课程的平均分数
18、查询最低分大于70分,最高分小于90分的sno
注意:因为一个sno对应好多成绩,所以要对sno进行分组。
19、查询所有学生的Sname,Cno和Degree列
注意: 使用inner join
20、查询所有学生的Sname,Cname和Degree列(分析的顺序过程很重要)
21、查询’张旭’教师任课的学生成绩
22、查询出”计算机系”教师所教课程的成绩
23、查询”95033”班的学生所选课程的平均分(使用内连接的方式)—>大家自己尝试一下
24、现查询所有同学的Sno、Cno和ran列
a.插入一张grade表
b.grade表中插入数据
c.看一下插入的数据
25、查询成绩高于学号为”109”、课程号为”3-105”的成绩的所有记录
26、查询选修”3-105”课程的成绩高于”109”号同学成绩的所有同学的sname,cno,degree
27、查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列
28、查询选修某课程的同学人数多于5人的教师姓名
29、查询选修编号为”3-105”课程且成绩至少高于选修编号为”3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序
30、查询所有”女”教师和”女”同学的name,sex,birthday(使用union all)
31、查询成绩比该课程平均成绩低的同学的成绩
32、查询所有任课教师的Tname和Depart(按照自己的思路来)
33、查询至少有2名男生的班号
34、查询”男”教师及其所上的课程.
35、查询和’李军’同性别的所有同学的sname
36、查询和”李军”同性别并同班的同学sname.
37、查询所有选修”计算机导论”课程的”男”同学的成绩信息