排序 order by
ASC: 升序,默认值
DESC: 降 序
#排序问题 按照工资排序select * from emp order by deptno desc , sal asc;#where 不能放在order by的后面 ,不然会报语法错误select * from emp where deptno >=20 order by deptno desc ,sal asc;#查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序select * from student3 order by age desc , math asc;
where 不能放在order by的后面 ,不然会报语法错误
TRUNCATE(X,D)函数
返回数值X保留到小数点后D位的值,截断时不进行四舍五入。
SELECT TRUNCATE(1.2328,3); -- 输出结果:1.232
FORMAT(X,D)函数
将数字X格式化,将X保留到小数点后D位,截断时要进行四舍五入。
SELECT FORMAT(1.2323,3); -- 输出结果:1.232
SELECT FORMAT(1.2328,3); -- 输出结果:1.233
聚合函数
#五个聚合函数 count avg sum max min
select count(comm) from emp ;#聚合函数会忽略空值,空值不算在范围内
select count(ifnull(comm,0)) from emp ;
select count(*) as '总人数' from emp;
#查询年龄大于 20 的总数
select count(*) from student3 where age>20;
#查询数学成绩总分
select sum(math) from student3;
#查询数学成绩平均分
select round(avg(math),1) from student3;
#查询数学成绩最高分
select max(math) from student3;
select max(math),name 最高分 from student3;
注意事项
where 后面不能接聚合函数
#语法错误,但是mysql仍然能运行,在sql server中不行,
#聚合函数只能和聚合函数一起搭配使用不能和普通字段一起被查询
# select查询中如果使用了聚合函数就不能写其它的字段,除非该字段是group by 子句



分组查询group by
#使用group by 分组查询时,只能使用聚合函数与group by 子句
#除了聚合函数外 select后面的参数group by里必须有 但是group by里面的参数select里可以没有
-- select * from student3 group by sex;
select sex ,count(*) from student3 group by sex;
select deptno , avg(sal) from emp group by deptno;
select job , count(*) from emp group by job;
# 查询年龄大于 25 岁的人,按性别分组,统计每组的人数
select sex , count(*) from student3 where age > 25 group by sex order by sex desc;
# where -> group by ... having ... ->order by顺序不能变
# 查询年龄大于 25 岁的人,按性别分组,统计每组的人数,并只显示性别人数大于 2 的数据
#having 是使用在group by 之后的,用于分组成功后继续进行条件筛选
select sex ,count(*) from student3 where age > 25 group by sex having count(*)>2;
#查询emp表,工资大于1000的员工,并且对部门编号进行分组,求出每组员工工资总和..并且降序排列显示
select deptno, sum(sal) 总工资 from emp where sal > 1000 group by deptno order by sum(sal) desc ;
#工资大于8600的
select deptno, sum(sal) 总工资 from emp where sal > 1000 group by deptno having sum(sal)>8600 order by sum(sal) desc ;



#16.分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) --ifnull()
select deptno, job, avg(ifnull(comm,0)) , sum(sal + ifnull(comm,0)) from emp group by deptno,job;

代码顺序必须遵循: where -> group by … having … ->order by
having 与 where 的区别
| 子名 作用 | |
|---|---|
| where 子 句 | 1) 对查询结果进行分组前,将不符合 where条件的行去掉,即在分组之前过滤数据,即先过滤再分组。 2) where后面不可以使用聚合函数 |
| having 子句 | 1) having子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。 2) having后面可以使用聚合函数 |
注意事项
limit 、分组查询
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子 句][LIMIT 子句];
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (9,'唐僧',25,'男','长安',87,78),
(10,'孙悟空',18,'男','花果ft',100,66),
(11,'猪八戒',22,'男','高老庄',58,78),
(12,'沙僧',50,'男','流沙河',77,88),
(13,'白骨精',22,'女','白虎岭',66,66),
(14,'蜘蛛精',23,'女','盘丝洞',88,88);
#limit 起始行数,返回行数
select * from student3 LIMIT 0,6;#0开始读6行
分页查询:
#分页查询
#用户会提交参数 pageNumber = 1 ;
# int pageSize = 5 ; 每页显示的记录数
#1页 : 0 , 5
#2页 : 5 , 5
#3页 : 10 , 5
#4页 : 15 , 5
#5页 : 20 , 5
select * from student3 limit (pageNumber - 1) * pageSize , pageSize;#java代码
select * from student3 limit 12,3;
musql数据库备份还原
命令提示符
备份:
mysqldump -uroot -p123456 mydb16 > E:/mysqldb16.sql
还原:
USE 数据库;
SOURCE 导入文件的路径;

