MySql03-排序与分页

#03 排序与分页

#排序


#1.如果没有使用排序操作,默认查询返回的数据是按照添加数据的顺序显示的
SELECT * FROM employees;

#2.ORDER BY 升序:ASC(ascend) 降序:DESC(descend)
#按照salary从高到低的顺序显示员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC;

#如果ORDER BY后没有显示指明排序的方式,则默认按照升序排列
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary;

#3.可以使用列的别名,进行排序
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
ORDER BY annual_sal;
#列的别名只能在ORDER BY中使用,不能在WHERE中使用***
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
WHERE annual_sal > 10000;#报错:Unknown column 'annual_sal' in 'where clause'

SELECT employee_id,salary
FROM employees
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC;

#4.二级排序,多级排序
#显示员工信息,按照department_id的降序排列,同一部门内按照salary升序排列
SELECT employee_id,salary,department_id
FROM employees
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC,salary ASC;


#分页,LIMIT子句必须放在整个SELECT语句的最后


#1.mysql使用limit实现数据的分页显示-- limit 偏移量,每页条数

#需求1:每页显示20条记录,此时显示第1页
SELECT employee_id,last_name
FROM employees
LIMIT 0,20;

#需求2:每页显示20条记录,此时显示第2页
SELECT employee_id,last_name
FROM employees
LIMIT 20,20;

#需求3:每页显示20条记录,此时显示第3页
SELECT employee_id,last_name
FROM employees
LIMIT 40,20;

#需求:每页显示pageSize条记录,此时显示pageNo页
#公式:LIMIT (pageNo-1)*pageSize,pageSize;

#2. WHERE ... ORDER BY ... LIMIT 声明顺序如下;
#LIMIT 格式严格来说: LIMIT 位置偏移量,条目数
#‘LIMTI 0,条目数’ 等于 ‘LIMIT 条目数’
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
#LIMIT 0,10;
LIMIT 10;

#表里有107条数据,要显示第32和33条数据
SELECT employee_id,last_name
FROM employees
LIMIT 31,2;
#mysql8.0新特性:LIMIT ... OFFSET ...
#LIMIT 2 OFFSET 31;

#查询员工表中工资最高的员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC
#limit 0,1;
LIMIT 1;

#课后练习
#查询员工的姓名、部门号、年薪,按年薪降序,按姓名升序显示
SELECT last_name,department_id,salary*12 annualSal
FROM employees
ORDER BY annualSal DESC,last_name;

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

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

 

posted @   亜光君  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示