---------------代码
#上机练习4
#1 查询所在学期id为2的所有男同学的姓名和地址(俩个注意逗号隔开)
SELECT stuname ,adress FROM student
WHERE nian_id=1;
#2查询无电子邮件的学生姓名和年级信息 (is null 代表的是空值)
SELECT stuname,nian_id FROM student
WHERE adress IS NULL;
#where adress=‘‘;
#3 查询所在学期id为2 的学生中所在1990年后出生的学生姓名(year把birthday包裹住只能单一的显示出他的年份其他不显示出来)
SELECT stuname FROM student
WHERE nian_id=2 AND YEAR(birthday)>=1990
#4 查询参加了日期为2013-2-15日的java科目考试的学生成绩信息
SELECT subid FROM sub_kemu
WHERE sunname=‘java‘
SELECT studentresult 成绩 FROM result
WHERE DATE(examdate)=‘2016-12-12‘ AND subno=1001;
#5查询参加了java科目考试的学员总成绩
SELECT SUM(studentresult) 总成绩 FROM result
WHERE subno=1001
#查询css的平均分
SELECT AVG(studentresult) 平均分 FROM result
WHERE subno=1001;
#上机练习5
#1 按照出生日期查询学期id为1的学生信息
SELECT stuname 姓名,stuid 编号 FROM student
WHERE nian_id=1
ORDER BY birthday DESC;#(降序)
#2 按日期先后 成绩由高到低查询编号为1的科目考试成绩信息
SELECT * FROM result
WHERE subno=1001
ORDER BY studentresult DESC,examdate ASC;#(最后再加分号)
#3 查询2013-3-22参加java考试的前五名
SELECT studentresult 前五名 FROM result
WHERE DATE(examdate)=‘2016-12-12‘ AND subno=1001
ORDER BY studentresult DESC
LIMIT 0,5;
#4 查询y2课时最多的科目名称
SELECT subid 科目 FROM sub_kemu
ORDER BY `subdate` DESC
LIMIT 1
#5 查询年纪最小的学生的姓名和所在班级
SELECT stuname 姓名,nian_id 所在班级,birthday FROM student
#order by DATEDIFF(now(),birthday)
ORDER BY birthday DESC
LIMIT 1
#6 查询2013--3-22参加考试的最低分出现在哪个科目中
SELECT subno ,studentresult FROM result
WHERE DATE(examdate)=‘2016-12-12‘
ORDER BY studentresult
LIMIT 0,1
#7 查询学号10000的学生参加所有的考试信息并按时间的先后顺序显示
SELECT * FROM result
WHERE stuno=3
ORDER BY examdate
#8 查询10000学生参加过所有的考试中最高分极时间 科目
SELECT studentresult 成绩,examdate 时间,subno 科目 FROM result
WHERE stuno=3
ORDER BY studentresult DESC
LIMIT 1
#上机练习6
#1 查询2016-2-17考试前五名的学生的学号和分数
SELECT stuid AS 学号,studentresult AS 分数 FROM student
INNER JOIN result
WHERE examdate=‘2016-12-12‘
ORDER BY studentresult DESC
LIMIT 0,5;
#将所有女学生按年龄由大到小排列 从第2条记录开始显示6名女学生的姓名 年龄 出生日期 手机号
SELECT stuname AS 名字, birthday AS 出生日期,phone AS 手机号,CEIL(DATEDIFF(NOW(),birthday)/365) AS 年龄 FROM student
WHERE sex=‘女‘
ORDER BY birthday DESC
LIMIT 1,6
#按出生年份分组统计学生人数 将各组中的人数达到俩人的年份和人数显示出来
#2016-12-12考试的所有学员最高分 最低分 平均分
SELECT MAX(studentresult),MIN(studentresult),AVG(studentresult) FROM result
WHERE DATE(examdate)=‘2016-12-12‘
#上机练习4
#1查询每个年级的总学时数,并按照升序排列
SELECT gradeId 年级,SUM(classHour) 总学时 FROM `subject`
GROUP BY gradeId
ORDER BY SUM(classHour)
#2查询每个参加考试的学员的平均分
SELECT studentNo 学号, AVG(studentResult) 平均分 FROM result
GROUP BY studentNo
#3查询每门课程的平均分,按降序排列
SELECT subjectNo 课程编号,AVG(studentResult) 平均分 FROM result
GROUP BY subjectNo
ORDER BY AVG(studentResult) DESC
#4查询每个学生参加的所有考试的总分,并按照降序排列
SELECT studentNo 学号,SUM(studentResult) 总分 FROM result
GROUP BY studentNo
ORDER BY SUM(studentResult) DESC
#1 查询每个班级的总学时数 并按照升序排列
SELECT nian_id AS 班级, SUM(`subdate`) 成绩和 FROM sub_kemu
GROUP BY nian_id
ORDER BY SUM(`subdate`)
#2 查询每个参加考试的学员的平均分
SELECT stuno 学员id, AVG(studentresult) FROM result
GROUP BY stuno
#3 查询每门课程的平均分 并按降序排列
SELECT subno AS 每门课程, AVG(studentresult) FROM result
GROUP BY subno
ORDER BY AVG(studentresult)
#4 查询每个学生的参加所有考试的总分 并按照降序排列
SELECT SUM(studentresult) ,stuno FROM result
GROUP BY stuno
ORDER BY SUM(studentresult)
#上机练习8
#查询所有科目的考试成绩信息 (某些科目可能从没有被考试过)
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#查询从未考试的科目
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#where r.studentresult is null; 不能拿成绩 做条件 有的人缺考
WHERE r.examdate IS NULL;
SELECT sunname, studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid= r.subno
WHERE r.examdate IS NULL;