Day13 MySQL基础06

Day13 Mysql基础06

4.5分页和排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRBsfrxo-1633284015013)(C:\Users\50092\Desktop\JAVA\截图\000000001.jpeg)]

排序

-- 分页 limit
-- 排序 order by 通过哪个字段排序、怎么排
-- 排序:升序 ASC、降序 DESC


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

分页

-- 分页 每页只显示5条数据
-- 语法:limit 当前页(起始值),页面的大小
-- 网页应用: 当前页,总的页数,页面的大小
-- LIMIT 0,5  1~5
-- LIMIT 1,5  2~6
-- LIMIT 6,5  1~5
SELECT s.studentno,studentname,subjectname,studentresult
FROM result r 
RIGHT JOIN student s
ON s.`studentno`=r.`studentno`
INNER JOIN `subject` sub
ON sub.`subjectno`=r.`subjectno`
WHERE subjectname = '高等数学-1'
ORDER BY studentresult DESC
LIMIT 0,5

-- 第一页0,5
-- 第二页5,5
-- 第三页10,5
-- 第N页PAGESIZEE*(N-1),PAGESIZE
-- 【pagesize:页面大小】
-- 【(n-1)*pagesize起始值】
-- 【n:当前页】
-- 【数据总数/页面大小=总页数】
-- 查询 JAVA第一学年 课程成绩排名前十的学生,并且分数要大于80的学生信息(学号,姓名,课程名称,分数)

SELECT s.`studentno`,`studentname`,`subjectname`,`studentresult`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno`=r.`studentno`
INNER JOIN `subject` sub
ON r.`subjectno`=sub.`subjectno`
WHERE `subjectname`='高等数学-1' AND `studentresult`>=80
ORDER BY `studentresult` DESC
LIMIT 0,10








4.6子查询

where(这个值是计算出来的)

相当于在where里面再嵌套一个子查询语句

where(select * from)

 -- where
 -- 方式1:使用连接查询
 SELECT `studentno`,r.`subjectno`,`studentresult`
 FROM `result` r
 INNER JOIN`subject` sub
 ON r.`subjectno`=sub.`subjectno`
 WHERE `subjectname`='高等数学-1'
 ORDER BY studentresult DESC
 
 -- 方式2:使用子查询
SELECT `studentno`,`subjectno`,`studentresult`
FROM `result`
WHERE subjectno=(
SELECT `subjectno`FROM `subject`
WHERE `subjectname`='高等数学-1'
)
ORDER BY studentresult DESC

-- 查询所有高等数学-1的学生学号
SELECT `subjectno`FROM `subject`WHERE `subjectname`='高等数学-1'
 
 
-- 分数不小于80分的学号和姓名
SELECT DISTINCT s.`studentno`,`studentname`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno`=r.`studentno`
WHERE studentresult>=80



-- 分数不小于80分的学号和姓名
-- 在以上基础上再增加一个科目,
SELECT DISTINCT s.`studentno`,`studentname`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno`=r.`studentno`
WHERE studentresult>=80 AND (SELECT `subjectno` FROM `subject` WHERE `subjectname`='高等数学-1')

-- 换种方法
SELECT DISTINCT s.`studentno`,`studentname`,`subjectname`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno`=r.`studentno`

INNER JOIN `subject` sub
ON r.`subjectno`= sub.`subjectno`
WHERE `subjectname`='高等数学-1'AND  r.studentresult>=80 
-- where不能同时出现两次?



-- 查询课程为 高等数学-1 且分数不小于 80 的同学的学号和姓名
SELECT `subjectname`,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 `subjectname`='高等数学-1' AND `studentresult`>=80




-- 其他写法(又内而外。最大的开始写到最小的结束)(高等数学-1 到 查询分数的最小值 到 学生学号)
SELECT `studentno`,`studentname`FROM `student` WHERE `studentno` IN(
   SELECT `studentno` FROM `result`WHERE `studentresult`>=80 AND `subjectno` =(
      SELECT `subjectno` FROM `subject` WHERE `subjectname`='高等数学-1')
)

-- 查询 C语言-1 前5名同学成绩的信息(学号,姓名,分数)  in 范围
SELECT s.`studentno`,`studentname`,`studentresult`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno`=r.`studentno`
INNER JOIN `subject` sub
ON sub.`subjectno`=r.`subjectno`
WHERE `subjectname`='C语言-1'
ORDER BY `studentresult` DESC
LIMIT 0,5
-- 嵌套的怎么写?(不嵌套的会了)

5.MySQL函数

官网自己查询学习

5.1常用函数(并不常用)

-- 数学运算
SELECT ABS(-98)-- 绝对值
SELECT CEILING(8.8)-- 向上取整
SELECT FLOOR(8.8)-- 向下取整
SELECT RAND()-- 返回一个0-1之间的随机数
SELECT SIGN(999)-- 判断一个数的符号  负数-1 正数1

-- 字符串函数
SELECT CHAR_LENGTH('我c你m')-- 字符串长度
SELECT CONCAT('你马','个比的')-- 拼接字符串
SELECT INSERT('你好戈比的',1,2,'我艹你嘛')-- 查询,从某个位置开始替换某个长度
SELECT LOWER('DASDSDS')-- 小写
SELECT UPPER('dsdfdx') -- 大写
....

NGTH(‘我c你m’)-- 字符串长度
SELECT CONCAT(‘你马’,‘个比的’)-- 拼接字符串
SELECT INSERT(‘你好戈比的’,1,2,‘我艹你嘛’)-- 查询,从某个位置开始替换某个长度
SELECT LOWER(‘DASDSDS’)-- 小写
SELECT UPPER(‘dsdfdx’) – 大写










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值