目录
3.3 排序
3.3.1 解释:
为了方便查看数据,可以对数据进行排序
navicat 数据表中自带有升序,降序
3.3.2 语法:
select * from 表名 order by 列1 ase|desc, 列2 asc|desc,.
3.3.3 说明:
- 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序。以此类推
- 默认按照列值从小到大排列
- asc从小到大排列。即升序
- desc从大到小排序。即降序
🧐3.3.4 例子:
例1:查询所有学生信息,按年龄从小到大排序
--正序: --默认不写asc 是正序 --select *from students order by age select *from students order by age asc
--倒序 select *from students order by age desc
例2:查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大搏序--select * from students order by age desc,studentNo select * from students order by age desc,studentNo asc
🧐3.3.5 练习:
1.查询所有学生信息,按班级从小到大排序,班级相同时,再按学号从小到大排序
select * from students order by class ,studentNo
3.3.6 ❗注意事项
问:如果是名字?
select * from students order by nane
ANS:名字来排,是乱序,因为名字是utf8的格式,没有按照中文来进行排序
解决:
select * from students order by convert(nane using gbk)
3.3.7 汇总
排序
例1:查询所有学生信息,按年龄从小到大排序
select * from students order by age
例2:查询所有学生信息,按年龄从大到小排序。年龄相同时,再按学号从小到大排序
select * from studenti order by age desc,studentNo
对中文字段进行排序
select *from students order by convert(name using gbk)
3.4 聚合函数
统计表中数据
- ·为了快速得到统计数据,经常会用到如下5个聚合函数
- count(*)表示计算总行数,括号中写星与列名。结果是相同的
- 聚合函数不能在where中使用
3.4.1 count(*)表示计算总行数
🧐例1∶查询学生总数
select count(*) from students
select count(nane, age) from students
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', age) from students' at line 1
> 时间: 0s
注意:
- count里面可以写 * ,count(*) ——以所有行来统计的,只要这一行有值就统计在内,count(*)比count(字段)更好
- 不能写指定的多个字段,也可以写单个字段,
- 为null不统计在内。
select count(nane) from students
为null不统计在总数内。
select count(card) from students
3.4.2 max(列)表示求此列的最大值
🧐例2:查询女生的最大年龄
select max(age) from students where sex = '女'
执行顺序:
求某个字段的max, 先 从什么表查(执行from),在执行条件(执行where),执行条件完(执行select),在返回结果的基础上进行select的操作
3.4.3 min(列)表示求此列的最小值
🧐例3:查询1班的最小年龄
select min(age) from students where class = '1班'
3.4.4 sum(列) 表示求此列的和
🧐例4∶查询北京学生的年龄总和
select sum(age) from students where hometown = '北京'
3.4.5 avg(列) 表示求此列的平均值
🧐例5:查询女生的平均年龄
select avg(age) from students where sex = '女'
3.4.6 🧐练习:
- 查询所有学生的最大年龄。最小年龄,平均年龄
select max(age) from students; select min(age) from students; select avg(age) from students
- 一班共有多少个学生
select count(*) from students
- 查询3班年龄小于18岁的同学有几个
select count(*) from students where age < 18 and class = '3班'