Day09-MySQL

DQL查询数据(重点)

分页和排序

排序

-- 排序:升序ASC,降序DESC
-- 语法:ORDER BY 字段 排序
-- 查询的结果根据成绩降序升序
SELECT s.studentno,studentname,subjectname,studentresult
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno
INNER JOIN `subject` sub
ON sub.subjectno=r.subjectno
WHERE subjectname='高等数学-2'
ORDER BY studentresult DESC

分页

-- 分页
-- 语法:LIMIT 起始位,偏移数或者可以认为是页面大小
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno
ORDER BY studentresult DESC
LIMIT 0,3

-- 第一页 limit 0,3
-- 第二页 limit 3,3
-- 第三页 limit 6,3
-- 第N页 limit 3(n-1),3

子查询

where (计算出来的值)

本质:在where语句中嵌套一个子查询语句

where (select*from)

-- ==============WHERE================

-- 1.查询高等数学-2的所有考试结果(学号,科目名,成绩),降序排列
SELECT `studentno`,`subjectname`,`studentresult`
FROM `result` r
INNER JOIN `subject` s
ON r.subjectno=s.subjectno
where subjectname='高等数学-2'
ORDER BY studentresult DESC

-- 方式二:使用子查询()
SELECT `studentno`,`subjectno`,`studentresult`
FROM `result`
WHERE subjectno=(
SELECT subjectno FROM `subject` 
WHERE subjectname='高等数学-2'
)
ORDER BY studentresult DESC

-- 分数不小于80分的学生的学号和姓名
SELECT DISTINCT s.`studentno`,`studentname`
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno 
WHERE `studentresult`>=80

-- 在基础上加一个科目,高等数学-2
SELECT DISTINCT s.`studentno`,`studentname`
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno 
WHERE `studentresult`>=80 AND `subjectno`=(
SELECT subjectno FROM `subject`
WHERE `subjectname`='高等数学-2'
)

SELECT DISTINCT s.`studentno`,`studentname`
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno 
INNER JOIN `subject` sub
ON sub.`subjectno`=r.`subjectno`
WHERE sub.`subjectname`='高等数学-2'
AND r.`studentresult`>=80

-- 嵌套(由里及外)
SELECT studentno,studentname FROM student WHERE studentno IN(
SELECT studentno FROM result WHERE studentresult>=80 AND subjectno=(
SELECT subjectno FROM `subject` WHERE subjectname='高等数学-2'
)
)
posted @ 2026-04-27 23:16  小空谜  阅读(11)  评论(0)    收藏  举报