[mysql]mysql排序和分页
#排序和分页本身是两块内容,因为都比较简单,我们就把它分到通一个内容里.
#1排序:
SELECT * FROM employees
#我们会发现,我们没有做排序操作,但是最后出来的107条结果还是会按顺序发出,而且是每次都一样.这我们就有一个疑惑了,现在我们的数据库是根据什么来排序的,在我们没有进行排序操作之前,是按工资还是部门id.默认的顺序总得有一个储存的顺序把,在这里面的顺序其实默认的顺序就是我们先后添加的顺序,这个我们做个了解


这里我们会发现,我们买东西之类开发的软件都会有一个排序多个功能.对应京东淘宝默认的显示顺序,我们可以理解成添加顺序,用户如果想按照效率,价格等顺序排序,这些排序的诉求是很正常的.我们的述求现在是按照salary从高到第的顺序去显示员工信息
基本排序
#使用ORDER BY对查询到达数据进行排序操作,order代表的就是排序,by代表的急速那个字段
SELECT * FROM employees ORDER BY salary;

我们发现,诶不对,不是按从高到低的顺序排序,反而是按照从低到高的顺序排序,那怎么办呢,不对怎么去表达从高到低呢,所以我们要指明升序操作还是降序操作.这里升序代表的是ASC和DESC,代表的是ascend和descent升序和降序的缩写
那么我们就在salary的后面加是desc
升序降序
SELECT * FROM employees ORDER BY salary DESC;

如果我们没有写ASC或者DESC的话我们默认就是升序排序排列,也就是ASC.这里我们就明白了,我们在升序的时候可以写ASC也可以不写,但是降序就必须写DESC了
别名和ORDER BY的使用
我们可以使用列的别名,进行排序.什么意思呢,就如下图
SELECT employee_id.salary*12 annual_salary FROM employees ORDER BY annual_salary DESC;

,大家可能会疑惑,这个不是挺简单的吗,没有必要将,但是因为我们是先将的列的别名讲完在讲的过滤WHERE,那么我问你们,能不能直接使用过滤别名这个操作呢,我们试一试
我们发现报错了,我们的别名只能在ORDER BY里使用,但是不能在WHERE里使用,这里我们透露一个天机,我们的SELECT语句,还没有既把WHERE和ORDER BY要求使用,一定要记住,WHERE是和FROM一起使用的.
SELECT employee_id,salary*12 annual_salary FROM employees
WHERE employee_id>10
ORDER BY annual_salary DESC;

强调格式
这里我提醒一下大家如果使用的不是这个字段进行排序,那么也不会报错,我们强调的点是我们的SQL的语句不是从前往后走的,如果是从前往后的话,那么我们的别名肯定就被发现了,但是我们实际是使用的是先对FROM进行查看有什么表和什么条件WHERE然后我们看看你想查什么字段,SELECT 然后我们再对ORDER BY进行排序.
也就是说先创建一个总表和条件的临时表,然后再挑选字段修改别名,然后再对这个表进行排序.
WHERE我们必须声明在FROM后面.再次提醒.
多级排序
我们实际的需求中,实际上我们看一下我们的字段,我们是按照部门的降序排列的,我们有很多员工他们的部门id是一样的.这种情况下他们是那个优先显示呢
.
这个时候我们就要对它进行二级排序,我们要显示员工信息,安装department_id降序排序然后再按salary升序排序,.这样怎么写呢

这时我们就发现是先按降序然后如果序号相同就按工资排序,如果我们把salary的顺序去掉,我们要记得NULL代表的最小的值,降序在第一个升序在最后一个,如果要进行三级排序的话,就是再加一个,
字段和排序规则.我们就统一叫多列排序,
,
LIMIT分页,
我们刚才说了我们希望他们有排序的功能的,我们排序的综合排序里可能就涉及很多个规则,广告费之类的,我们查询数据的时候,我们希望数据库给我们发几万条数据吗,其实是不希望,我们也看不过来,我们就只需要几页就可以了.我们知道吃饭的时候我们点外卖的时候,我们把方圆2公里的饭店都反馈给你,我们是不是看不过来,没有必要返回那么多数据,如果网速一样,我们返回的数据的时间也会不一样,我们希望快一点,我们也看不了这么多.我们需要我们再下一页看是不是就可以了.如果我们看下一页是不是会对网络有要求.
分页的必要性还是有,我们只需要一页一页的去查看.
如果前面有你想要的结果了那你就不会查看后面的结果了.在mysql里面我们是怎么处理分页的功能.
分页的关键字是LIMIT实现数据的分页显示
SELECT employee_id,last_name FROM employees LIMIT 这里我们运行之后会发现,全部都出现了
SELECT employee_id,last_name FROM employees LIMIT 0,20 这里的0代表的偏移量,他会指最开始的第一条数据,如果是1就是第二条记录,所以我们叫他偏移量,后面的20代表的就是需要多少条记录.
我们现在显示的就是第一页的数据.这是我们的需求1,我们现在想显示第二页的数据,我们就应该从120id开始
这个时候我们的偏移量应该写多少呢,SELECT employee_id,last_name FROM employees LIMIT 20,20,
如果这样往下走的话,我们是不是就可以写成一个公司,我要显示pageSize条记录,此时显示第pageNumber
SELECT employee_id,last_name FROM employees LIMIT (page-1*pagesize),pagesize.
因为第一页是不是偏移量是0阿,我们就要减一,如果我想显示,第某页的数据,这个就是我们要的pageno,我们点击页面的时候这个值就会发给我们后台,后台的程序就会把写好的程序交给数据库,就会出现我们需要的数据.
这个limit我们现在用的比较纯粹.
我们现在要考虑ORDER BY WHERE LIMIT 的声明顺序
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>6000
ORDER BY salary desc
LIMIT 0,10;

这里LIMIT 有两个参数偏移量和条目数,严格上来说是这样,但是如果你只输入一个参数,,LIMIT 0,条目数和LIMIT 条目数是相同的.也就是只输入一个参数,那它就会把偏移量看成0,参数看成条目数
我们要记住声明顺序,LIMIT 和ORDER BY是要放在最后的.
使用的几个场景
如果表里有4条记录我们只想看23条记录.
类似的函数
如果我们不想看那么多数据,只想要一部分数据.
LIMIT 有个新场景MYSQL8.0 LIMIT...OFFSET
比如我们想显示107条数据的里面的32条和33条数据.
SELECT * FROM employees LIMIT 31 OFFSET 2.我们这个跑出来的结果会是,第2条之后的31条记录,也是比较简单.就是把参数换一个,然后把逗号换成limit.
来个小练习查询员工表中的工资最高的员工
SELECT employee_id,last_name,salary FROM employees ORDER BY DESC LIMIT 1
拓展:
这个分页在mysql PGSQL mariaDB SQLite使用的是LIMIT,但是其他的数据库不一定
如果用的是SQL server 使用速TOP关键词,要写在SELECT后面 直接跟正在SELECT top 5这样就是取5个数字
DB2就要用FECTCH FIRST 5 ROWS ONLY这样
Oracle就是要用ROWNUM的条件来统计行数.WHERE rownum<5,这个rownum是Oracle对每个表提供的一个隐藏的索引字段,代表的急速前5个数据库.
课后练习题
第05章_排序与分页
#1. 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示
#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据
( 一定要注意结果看起来对不对因为我们经常会出现SQL语句并没有报错,但是其实结果是不满足要求的情况.我这边是建议大家每写一个条件就跑一下,看看对不对,到时候子查询这种情况会更多,因为那是我们难度的巅峰)
S#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
( 还记得我们当时的比较规则也是在my.ini里对比的规则,类似我们现在排序,如果我们用的字符集就是utf那么比较规则也是utf-8的规则.那么我们要如何使用字节数来排序呢,那么我们就要用函数LENTH,这个是有点超纲的,不能直接用email排序.)
答案: 1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序显示
SELECT last_name,department_id,salary * 12 annual_sal FROM employees ORDER BY annual_sal DESC,last_name ASC;

2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第 21到40位置的数据 SELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC LIMIT 20,20;

3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号 升序
SELECT last_name,email,department_id FROM employees #where email like '%e%' WHERE email REGEXP '[e]' ORDER BY LENGTH(email) DESC,department_id ASC

相关文章:
[mysql]mysql排序和分页
#排序和分页本身是两块内容,因为都比较简单,我们就把它分到通一个内容里. #1排序: SELECT * FROM employees #我们会发现,我们没有做排序操作,但是最后出来的107条结果还是会按顺序发出,而且是每次都一样.这我们就有一个疑惑了,现在我们的数据库是根据什么来排序的,在我们没有进…...
开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略
摘要:本文深入探讨在开源 AI 智能名片 S2B2C 商城小程序的情境下,全渠道供应的运行机制。阐述各环节企业相互配合的重要性,重点分析零售企业在其中的关键作用,包括协调工作、信息传递、需求把握等方面,旨在实现高效的全…...
一次渲染十万条数据:前端技术优化(上)
今天看了一篇文章,写的是一次性渲染十万条数据的方法,本文内容是对这篇文章的学习总结,以及知识点补充。 在现代Web应用中,前端经常需要处理大量的数据展示,例如用户评论、商品列表等。直接渲染大量数据会导致浏览器性…...
springboot实训学习笔记(5)(用户登录接口的主逻辑)
接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次,点赞7…...
python中网络爬虫框架
Python 中有许多强大的网络爬虫框架,它们帮助开发者轻松地抓取和处理网页数据。最常用的 Python 网络爬虫框架有以下几个: 1. Scrapy Scrapy 是 Python 中最受欢迎的网络爬虫框架之一,专为大规模网络爬取和数据提取任务而设计。它功能强大、…...
GEC6818初次连接使用
目录 1.开发板资源接口编辑编辑 2.安装 SecureCRT工具 2.1SecureCRT相关问题 3.连接开发板 4.开发板文件传输 4.1串口传输 rx 从电脑下载文件到开发板 sz 从开发板把文件发送到电脑 4.2U盘/SD卡传输 4.3网络传输[重点] 5.运行传到开发板的可执行文件 6.开发板网络…...
解释下不同Gan模型之间的异同点
生成对抗网络(GAN, Generative Adversarial Network)是一类强大的生成模型。随着时间的推移,研究人员提出了许多不同的 GAN 变体来改善原始模型的性能或针对特定任务进行优化。下面将解释一些常见的 GAN 变体,并讨论它们的异同点。…...
Hadoop的一些高频面试题 --- hdfs、mapreduce以及yarn的面试题
文章目录 一、HDFS1、Hadoop的三大组成部分2、本地模式和伪分布模式的区别是什么3、什么是HDFS4、如何单独启动namenode5、hdfs的写入流程6、hdfs的读取流程7、hdfs为什么不能存储小文件8、secondaryNameNode的运行原理9、hadoop集群启动后离开安全模式的条件10、hdfs集群的开机…...
Day99 代码随想录打卡|动态规划篇--- 01背包问题
题目(卡玛网T46): 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&am…...
往证是什么意思
“往证”通常是在数学证明中使用的一种方法,尤其是在证明某个结论的相反(即否定)是错误的情况下。具体来说,就是假设结论不成立,然后通过逻辑推理展示出这种假设导致矛盾,从而得出原结论必然成立。 举例说…...
Camunda流程引擎并发性能优化
文章目录 Camunda流程引擎一、JobExecutor1、工作流程2、主要作用 二、性能问题1、实际场景:2、性能问题描述3、总结 三、优化方案方案一:修改 Camunda JobExecutor 源码以实现租户 ID 隔离方案二:使用 max-jobs-per-acquisition 参数控制上锁…...
spring springboot 日志框架
一、常见的日志框架 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 注意:SLF4j 类似于接口 Log4j ,Logback 都是出自同一作者之手 JUL 为apache 公司产品 Spring(commons-logging)、Hibernate(jboss…...
【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作
当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…...
电脑怎么禁用软件?5个方法速成,小白必入!
电脑禁用软件的方法多种多样,以下是五种简单易行的方法. 适合不同需求的用户,特别是电脑小白。 1. 使用任务管理器禁用启动项 操作步骤:按下“Ctrl Shift Esc”组合键,打开任务管理器。 切换到“启动”选项卡,找到…...
力扣之181.超过经理收入的员工
文章目录 1. 181.超过经理收入的员工1.1 题干1.2 准备数据1.3 题解1.4 结果截图 1. 181.超过经理收入的员工 1.1 题干 表:Employee -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | salary | int | | mana…...
C++语法应用:从return机制看返回指针,返回引用
前言 编程是极其注重实践的工作,学习的同时要伴随代码 引入 此前对返回指针和引用有一些纠结,从return角度来观察发生了什么。 return机制 函数中return表示代码结束,如果return后面有其他代码将不被执行。 return发生了值转移,return后面的…...
Linux5-echo,>,tail
1.echo命令 echo是输出命令,类似printf 例如:echo "hello world",输出hello world echo pwd,输出pwd的位置。是键盘上~ 2.重定向符> >> >指把左边内容覆盖到右边 echo hello world>test.txt >…...
sqlgun靶场训练
1.看到php?id ,然后刚好有个框,直接测试sql注入 2.发现输入1 union select 1,2,3#的时候在2处有回显 3.查看表名 -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()# 4.查看列名…...
简化登录流程,助力应用建立用户体系
随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。 华为账号服务(Account Kit)提供简单、快速、安全的登录功能,让用户快…...
【研发日记】嵌入式处理器技能解锁(六)——ARM的Cortex-M4内核
文章目录 前言 背景介绍 指令集架构 ARM起源 ARM分类 Cortex-M4 内核框架 指令流水线 实践应用 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
