MySql(4)-select(2)

--==================分页和排序================
--升序 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

 

posted @ 2022-05-31 10:57  长空扯淡  阅读(41)  评论(0)    收藏  举报