admin管理员组文章数量:1487745
MySQL【知识改变命运】06
前言:在05这节数据结构里面,我们知道select * from 这个操作很危险,如果数据库很大,会把服务器资源耗尽,接下来提到的查询可以有效的限制返回记录
1:分页查询
分页查询可以有效控制一次查询出来的结果集的记录条数,可以有效缓解减少数据库服务的压力,对用户也很好
1.1:语法:加粗样式
代码语言:javascript代码运行次数:0运行复制-- 起始下标为 0
-- 从 0 开始,筛选 num 条结果
select from table_name [where...] [order by] limit num;
-- 从 start 开始,筛选 num 条结果
select from table_name [where...] [order by] limit start,num;
-- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤
select from table_name [where...] [order by] limit num offset start;
1.2:练习
限制两条,从第0条开始,只取前两条记录
限制两条,从第 2 条开始,只取前两条记录
注意:这里不是从条开始计数,而是从第零条,类似于数组
如果我们超过了表中的范围,会返回空结果集
limit start,num;
num offset start;
这两条语句表达效果一样
用页数查找 这里数据我们一共有 9条
页数=总页数/每页条数,如果有余数则+1; 根据页数计算起始的位置 srart从0开始,start=(页数-1)*每页显示1的记录数; 这个表一共有5页 查看第一页数据:
查看第三页数据:
查看最后一页:
最后一页,有几条数据就都几条
2Update 修改
2.1:语法
代码语言:javascript代码运行次数:0运行复制UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment [, assignment] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
对符合条件的结果进⾏列值更新 update 表名 set 列名 =值…;
2.2:练习
将孙悟空同学的数学成绩变更为 80 分
2条数据被影响,匹配两条记录,2条被更改。 将曹孟德同学的数学成绩变更为 60 分,语⽂成绩变更为 70 分
将总成绩前三的 3位同学的数学成绩加上 10 分 原表数据
排名
修改:
修改成功后查询
将所有同学的语⽂成绩更新为原来的 +10分
Update 注意事项 • 以原值的基础上做变更时,不能使⽤math += 30这样的语法 • 不加where条件时,会导致全表数据被列新,谨慎操作
3:Delete 删除
3.1:语法
代码语言:javascript代码运行次数:0运行复制 DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
3.2:练习
删除孙悟空同学的考试成绩 原表:
删除后的表:
delete不加条件限制很危险
删掉表中的全部内容;
4:小总结
代码语言:javascript代码运行次数:0运行复制新增:insert into 表名
查询:select 列名 from 表名
修改:update 表名
删除:delete from 表名
insert ,update ,delete 执行成功返回的是受影响的行数(整数) select 执行成功之后返回的是一个结果集(集合)
5:截断表
5.1:语法
代码语言:javascript代码运行次数:0运行复制1 TRUNCATE [TABLE] tbl_name
创建一个表
我们删除所有数据后,再次写入新的值,我们看看有什么效果
我们会发现,自增会从表记录中的值开始填充
执行截断操作:
我们再加入数据:
表回到了最初的创建时候状态 自增id也会从0开始
6:插入查询结果
6.1:语法:
代码语言:javascript代码运行次数:0运行复制INSERT INTO table_name [(column [, column ...])] SELECT ...
6.2:练习:
删除表中的重复记录,重复的数据只能有⼀份 创建一个表
**实现思路:**原始表中的数据⼀般不会主动删除,但是真正查询时不需要重复的数据,如果每次查询 都使⽤DISTINCT进⾏去重操作,会严重效率。可以创建⼀张与 t_recored 表结构相同的表,把 去重的记录写⼊到新表中,以后查询都从新表中查,这样真实的数据不丢失,同时⼜能保证查询效 率 创建一个新表:
这里有个小技巧: 语法:
代码语言:javascript代码运行次数:0运行复制create table new_table like old_table
可以创建一个相同的表结构的新表; 数据不会导入。
将去重的数据放入新表中:
7:聚合函数
7.1:语法
代码语言:javascript代码运行次数:0运行复制COUNT([DISTINCT] expr) 返回查询到的数据的 数量
SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr) 返回查询到的数据的 最⼤值,不是数字没有意义
MIN([DISTINCT] expr) 返回查询到的数据的 最⼩值,不是数字没有意义
7.1练习:
7.1.1:COUTN
• 统计exam表中有多少记录** 原表
以上有三种查询方式,'* ’ ,常数,列,如果求数据行数条数,建议用 ‘ * ’,如果用列求,他会自动忽略NULL值行。 列查询中:普通列不及主键列效率高;
统计语⽂成绩⼩于50分的学⽣个数:
7.1.2:SUM
• 统计所有学生数学成绩总分**
统计所有学生英语成绩总分:
注意一下啊:所求得和会忽略列值为NULL的值 不能统计非数值的列
虽然没有报错,但是不符合预期。
7.1.3 :AVG
• 统计英语成绩的平均分
• 统计平均总分
补充小点: 语法:
代码语言:javascript代码运行次数:0运行复制ROUND(原来小数,小数点后位数)
7.1.4:MAX和MIN
• 查询英语最⾼分
如果我们把所有值改为NULL呢?
查看英语最低分:
查询 > 70 分以上的数学最低分
查询数学成绩的最⾼分与英语成绩的最低分
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent 删除mysql数据数学统计语法本文标签: MySQL知识改变命运06
版权声明:本文标题:MySQL【知识改变命运】06 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754744862a3179064.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论