mysql(DML-2)

order by 排序

对SELECT语句查询得到的结果,按某些字段进行排序
与DESC降序或ASC升序搭配使用,默认为ASC升序
演示:
在这里插入图片描述
在学号从大到小的基础 上,成绩升序排列
在这里插入图片描述

limit

LIMIT [m,]n 或 LIMIT n OFFSET m
限制SELECT返回结果的行数
m 制定第一个返回记录行的偏移量
n 制定返回记录行的最大数目
m不指定则偏移量为0,从第一条开始返回前n条记录
offset 起始位置
下标从0开始
LIMIT 常用于分页显示
演示:
假设返回成绩前五名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
返回2-6名
在这里插入图片描述

子查询

在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
嵌套查询可由多个子查询组成,求解的方式是由里及外
子查询返回的结果一般都是集合,故而建议使用 IN 关键字
查询高等数学-1的所有考试结果(学号 科目编号 成绩) 成绩降序排列
内连接
select stuNo,subNo,score
from result
join subject
on subNo=subjectNo
where subjectName=‘高等数学-1’
order by score desc;
在这里插入图片描述
子查询
select stuNo,subNo,score
from result
where subNo in
(select subjectNo from subject where subjectName=‘高等数学-1’)
order by score desc;

select stuNo,subNo,score
from result
where subNo =
(select subjectNo from subject where subjectName=‘高等数学-1’) 只有一个值可以用"="
order by score desc;

在这里插入图片描述
子查询执行顺序
由里到外

使用子查询,查询aa同学所在的年级名称
select GradeName from grade where GradeID in (select grade_id from student where stu_name=‘aa’);
在这里插入图片描述

mysql函数

数学函数

select abs(-1); 绝对值
在这里插入图片描述
select ceiling(9.3); 向上取整,即大于等于我的最小整数
在这里插入图片描述
select floor(9.3);向下取整 即小于等于我的最大整数

在这里插入图片描述
select rand(); 返回0-1之间的随机数
在这里插入图片描述
select sign(9); 符号函数,正数1 负数-1 0返回0
在这里插入图片描述
select sqrt(2); 开根号
在这里插入图片描述
select power(3,2); m的n次方
在这里插入图片描述
select round(4.235,2); 四舍五入保留2位小数
在这里插入图片描述在这里插入图片描述
select truncate(4.235,2); 截断保留2位小数
在这里插入图片描述

字符串函数

select char_length(‘hello’);返回字符串中包含的字符数
在这里插入图片描述
select concat(‘h’,‘e’,‘ll’,‘o’); 合并字符串
在这里插入图片描述
select insert(‘hello’,1,3,‘wo’); 替换字符串 从第几个位置开始,替换某个长度
从第一个字符开始,用 wo 替换三个长度
在这里插入图片描述
如果起始位置超过了字符串的长度,则返回原字符串
select insert(‘hello’,6,3,‘wo’);
在这里插入图片描述
select lower(‘I LOVE you’); 小写
在这里插入图片描述
select upper(‘I LOVE you’); 大写
在这里插入图片描述
select left(‘i love you’,3);左边截取几个字符
select right(‘i love you’,3);右边截取几个字符
在这里插入图片描述
select replace(‘你好,北京欢迎你!’,‘你’,‘你们’); 用 你们 来替换 你
在这里插入图片描述
select substr(‘北京欢迎你!’,1,3); 截取 从第几个位置开始截取 截取的长度
在这里插入图片描述
select trim(’ 北京 欢迎 你 '); 左右去空格
在这里插入图片描述
select reverse(‘北京欢迎你!’); 反转
在这里插入图片描述
应用 比如 将姓李的同学 改成姓历
select replace(stu_name,‘李’,‘历’) as 新名字 from student where stu_name like ‘李%’;
在这里插入图片描述

日期和时间函数

select current_date(); 获取当前日期
select curdate(); 获取当前日期
在这里插入图片描述
在这里插入图片描述
select now(); 获取当前日期和时间
在这里插入图片描述
select localtime(); 获取当前日期和时间
在这里插入图片描述
select sysdate(); 获取当前日期和时间
在这里插入图片描述
分别获取日期中的某个部分
select year(now()); select month(now()); select day(now());
select hour(now()); select minute(now()); select second(now());在这里插入图片描述

系统信息函数

select version(); 版本
在这里插入图片描述
select user(); 当前用户
在这里插入图片描述

统计函数

在这里插入图片描述
统计函数返回的就是一个值
count()是非空值的计数

在这里插入图片描述

select count(stu_name) from student;
在这里插入图片描述
select count(address) from student;
在这里插入图片描述

select count(*) from student; 不推荐使用
在这里插入图片描述

select count(1) from student; 效率高

在这里插入图片描述

GROUP BY分组

使用GROUP BY关键字对查询结果分组
对所有的数据进行分组统计
分组的依据字段可以有多个,并依次分组
与HAVING结合使用,进行分组后的数据筛选

查询不同课程的平均分 最高分 最低分
根据不同的课程进行分组
select subNo,avg(score),max(score),min(score) from result
group by subNo;

在这里插入图片描述
select subjectName,avg(score),max(score),min(score) from result
join subject on subNo=subjectNo
group by subNo;
在这里插入图片描述

查询平均分大于70的科目
select subjectName,avg(score),max(score),min(score) from result
join subject on subNo=subjectNo
group by subNo
having avg(score)>65;
在这里插入图片描述
在此基础上再按平均分升序排列
select subjectName,avg(score),max(score),min(score) from result
join subject on subNo=subjectNo
group by subNo
having avg(score)>65
order by avg(score) asc;
在这里插入图片描述
在此基础上,只显示第一条
select subjectName,avg(score),max(score),min(score) from result
join subject on subNo=subjectNo
group by subNo
having avg(score)>65
order by avg(score) asc
limit 1 offset 0;

在这里插入图片描述
针对group by 用法和原理的介绍
https://blog.csdn.net/weixin_42724467/article/details/89378526

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值