--==================分页和排序================
--升序 ASC 降序 DESC LIMIT 起始值,每页的数量
--查询Java程序设计-1 课程成绩排名前十的学生,并且分数大于八十(学号、姓名、课程名称、分数)
SELECT s.studentno,studentname,subjectname, studentresult
FROM student AS s
JOIN result AS r
ON s.studentno = r.studentno
JOIN SUBJECT AS sub
ON r.subjectno = sub.subjectno
WHERE studentresult>80 AND subjectname='Java程序设计-1'
ORDER BY studentresult ASC
LIMIT 0,2
--LIMIT 0,2 就是从第一条信息开始,页面有两条信息 LIMIT 2,2 从第三条信息开始,页面有两条信息
--===============子查询和嵌套查询 (由里及外)====================
--Java程序设计-1课程分数不小于80分的学生的学号和姓名
SELECT studentno,studentname
FROM student
WHERE studentno IN (
SELECT studentno FROM result WHERE studentresult>=80 AND subjectno IN (
SELECT subjectno FROM `subject` WHERE subjectname = 'Java程序设计-1'))
--查询 Java程序设计-1 前五名同学的成绩信息(学号 姓名 分数)
SELECT s.studentno,studentname,studentresult
FROM student s JOIN result r
ON s.studentno = r.studentno
WHERE subjectno IN (
SELECT subjectno FROM `subject` WHERE subjectname = 'Java程序设计-1')
ORDER BY studentresult DESC
LIMIT 0,5
--================聚合函数=========================
--COUNT 计数
SELECT COUNT(sex) FROM student --COUNT(字段),会忽略所有的NULL值
SELECT COUNT(*) FROM student --不会忽略NULL值
SELECT COUNT(1) FROM result --不会忽略NULL值
SELECT SUM(studentresult) AS 总和 FROM result
SELECT AVG(studentresult) AS 平均分 FROM result
SELECT MAX(studentresult) AS 最高分 FROM result
SELECT MIN(studentresult) AS 最低分 FROM result
--查询不同课程的平均分、最高分、最低分 (分组)
SELECT subjectname,AVG(studentresult),MAX(studentresult),MIN(studentresult)
FROM result r
JOIN `subject` sub
ON r.subjectno=sub.subjectno
GROUP BY sub.subjectno --通过什么字段来分组
HAVING AVG(studentresult)>60 --HAVING的条件必须写在GROUP BY的下面
--===================MD5加密========================
UPDATE student SET loginpwd = MD5(loginpwd) WHERE studentno=1000