美文网首页MySQL数据库
Select进阶查询·查询结果处理

Select进阶查询·查询结果处理

作者: 技术老男孩 | 来源:发表于2023-01-25 08:54 被阅读0次

一、定义:

  • 对用select 命令查找到的数据再做处理,
  • 类似于系统命令管道 例如 ps aux | grep httpd

二、语法格式:

语法格式1:不加条件查找数据

select 字段名列表 from 库.表 分组|排序|过滤|分页 ;

语法格式2:添加条件查找数据

select 字段名列表 from 库.表 where 筛选条件 分组|排序|过滤|分页 ;

三、关键词:

分类 命令/符号/... 说明/注意
分组 group by 表头名 表头值相同为一组,值只显示一次
注意: 分组命令只能单独使用, 或与聚集函数一起使用
排序 order by 表头名 对表头下的数据进行排序
针对数值类型的表头进行排序
order by 表头名 asc 升序,不写asc为默认升序
order by 表头名 desc 降序
过滤 having 筛选条件 对select查询到的数据 做筛选
分页 limit n1 n1:只显示查询结果的第n1行
limit n1,n2 n1:表示起始行(从0开始计数)
n2:表示显示的总行数

四、使用案例:

  • 分组group by:
# 查看每个部门的人数  
# 按照部门编号分组统计员工名的个数
mysql>select dept_id, count(name)  from tarena.employees group by  dept_id;
+---------+-------------+
| dept_id | count(name) |
+---------+-------------+
|       1 |           8 |
|       2 |           5 |
|       3 |           6 |
|       4 |          55 |
+---------+-------------+
4 rows in set (0.00 sec)
  • 排序order by:运算符横着计算,统计函数竖着计算
# 把2018年每个员工的总收入由高到底排序
mysql> select employee_id, sum(basic+bonus) as total 
    -> from tarena.salary where year(date)=2018 group by     
    -> employee_id order by total desc;
+-------------+--------+
| employee_id | total  |
+-------------+--------+
|         117 | 374923 |
|          31 | 374923 |
|          37 | 362981 |
|          68 | 360923 |
...
+-------------+--------+
120 rows in set (0.01 sec)
  • 过滤having:
# 查找部门人数少于10人的部门名称及人数
mysql> select  dept_id,count(name),from,tarena.employees  
    -> group by dept_id having count(name)<10;
+---------+-------------+
| dept_id | count(name) |
+---------+-------------+
|    NULL |           3 |
|       1 |           8 |
|       2 |           5 |
|       3 |           6 |
|       6 |           9 |
|       8 |           3 |
+---------+-------------+
6 rows in set (0.00 sec)
  • 分页limit:
# 只显示查询结果的前3行
mysql> select * from tarena.user where shell is not null limit 3;
+----+--------+----------+------+------+---------+---------+---------------+
| id | name   | password | uid  | gid  | comment | homedir | shell         |
+----+--------+----------+------+------+---------+---------+---------------+
|  1 | root   | x        |    0 |    0 | root    | /root   | /bin/bash     |
|  2 | bin    | x        |    1 |    1 | bin     | /bin    | /sbin/nologin |
|  3 | daemon | x        |    2 |    2 | daemon  | /sbin   | /sbin/nologin |
+----+--------+----------+------+------+---------+---------+---------------+
3 rows in set (0.01 sec)

# 只显示查询结果的第1行 到 第3 
# 0:表示查询结果的第1行
# 3:表示查询的行数
mysql> select * from user where shell is not null limit 0,3;
+----+--------+----------+------+------+---------+---------+---------------+
| id | name   | password | uid  | gid  | comment | homedir | shell         |
+----+--------+----------+------+------+---------+---------+---------------+
|  1 | root   | x        |    0 |    0 | root    | /root   | /bin/bash     |
|  2 | bin    | x        |    1 |    1 | bin     | /bin    | /sbin/nologin |
|  3 | daemon | x        |    2 |    2 | daemon  | /sbin   | /sbin/nologin |
+----+--------+----------+------+------+---------+---------+---------------+
3 rows in set (0.00 sec)

相关文章

  • Select进阶查询·查询结果处理

    一、定义: 对用select 命令查找到的数据再做处理, 类似于系统命令管道 例如 ps aux | ...

  • MySQL数据库性能优化

    MySQL架构 查询缓存 查询缓存(Query Cache)原理: 缓存SELECT操作或预处理查询的结果集和SQ...

  • 5. 查询缓存和索引

    1. 查询缓存 查询缓存( Query Cache )原理缓存SELECT操作或预处理查询的结果集和SQL语句,...

  • SQL第3/n篇(持续更新中)子查询很重要

    进阶7 子查询 含义:子查询(内查询):出现在其他语句中的select语句主查询(外查询):外部的查询语句分类...

  • sqlP39-P48

    #进阶3:排序查询 /* #引入 SELECT * FROM employees 语法:执行顺序 select 查...

  • Select进阶查询·连接查询

    一、连接查询定义: 把多张表通过连接条件临时组成1张新表,在临时的新表里有连接表的所有表头和数据。 连接查询分类:...

  • Select进阶查询·子查询

    一、子查询定义: select查询命令里包含select查询命令,包涵的select 命令 放在() 里 包含的s...

  • mysql排序查询

    进阶3:排序查询 /*语法:select 查询列表from 表名【where 筛选条件】order by 排序的...

  • mysql分组查询

    进阶5:分组查询 /*语法: select 查询列表from 表【where 筛选条件】group by 分组的字...

  • 子查询

    进阶7:子查询 /*含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询...

网友评论

    本文标题:Select进阶查询·查询结果处理

    本文链接:https://www.haomeiwen.com/subject/ialucdtx.html