MySQL单表数据查询之分组数据查询之旅

  • 简单分组查询

  • 实现统计功能分组查询

  • 实现多个字段分组查询

1、创建数据库

create database check_group;

2、使用刚刚创建的数据库

use check_group;

3、创建表boluo

create table boluo(​     id int,​        name varchar(20),​      job varchar(20),​       brithday date,​     sal int,​       depno int);

查看表的定义信息

desc boluo;

此处添加照片7

4、插入数据

insert into boluo values(001,'菠萝吹雪','洗完工',1900-01-01,1787,10), (002,'梨花诗','收银员',1900-07-07,1987,10);
insert into boluo values(001,'陆小果','洗完工',1900-02-01,1787,20), (002,'橙留香','送货员',1900-09-07,1987,20);
insert into boluo values(001,'上官子怡','洗完工',1900-02-01,1787,30), (002,'天下无贼','售货员',1900-09-07,1987,30);

查看菠萝表所有的数据记录

select * from boluo;

执行完上面的命令后,发现2出错误

1、发现出错brithday写错了,修改为birthday

alter table boluo​           change brithday birthday varchar(20);

再次查看表的定义信息

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |              | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| job      | varchar(20) | YES  |     | NULL    |       |
| birthday | varchar(20) | YES  |     | NULL    |       |
| sal      | int(11)     | YES  |     | NULL    |       |
| depno    | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

2、birthday数据没有成功插入,导致select为默认值

修改

update boluo set birthday="1900-01-01" where name='菠萝吹雪';update boluo set birthday="1900-07-07" where name='梨花诗';update boluo set birthday="1900-02-01" where name='陆小果';update boluo set birthday="1900-09-07" where name='橙留香';update boluo set birthday="1900-02-01" where name='上官子怡';update boluo set birthday="1900-09-07" where name='天下无贼';

========================

分组数据查询的意义:

对数据库具有基于表的特定列对数据进行分析处理

例如:可以对所有数据进行分组,然后对分组后的数据记录进行统计计算

分组用SQL语句GROUP BY实现,基本语法格式如下:

select function()  from table_name​          where condition​            group by field;

field字段的要求:field字段上的值一定要有重复值,否则没有意义

执行SQL语句GROUP BY对所有数据进行分组

select * from table_name ​       group by deptno;

实现统计功能分组查询

select group_concat(field)​          from table_name​                    where condition​                    group by field;

==========================================

5、分组数据查询----简单分组查询

select  * from boluo group by depno;

查询结果:

+------+--------------+-----------+------------+------+-------+
| id   | name         | job            | birthday      | sal     | depno |
+------+--------------+-----------+------------+------+-------+
|    1 | 菠萝吹雪     | 洗完工    | 1900-01-01 | 1787 |    10 |
|    1 | 陆小果       | 洗完工      | 1900-02-01 | 1787 |    20 |
|    1 | 上官子怡     | 洗完工    | 1900-02-01 | 1787 |    30 |
+------+--------------+-----------+------------+------+-------+
3 rows in set (0.00 sec)

解释:根据depno字段进行分组 从boluo表中查询所有的字段

只实现简单的分组查询是没有任何实际意义的,因为关键字group by单独使用时,默认查询出每个分组中随机记录一条,具有很大的不确定性。

6、分组数据查询—实现统计功能分组查询

select depno,group_concat(name) isname​      from boluo​     group by depno;

解释:根据depno分组,命名isname来存储显示name的字段,select 后面的depno字段,就仅仅是普通的查询而已

查询结果:

+-------+-------------------------------------------------------------------------------------------------------------------------------------------+
| depno | isname                                                                                                                                    |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------+
|    10 | 菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗                                           |
|    20 | 陆小果,橙留香                                                                                                                             |
|    30 | 上官子怡,天下无贼                                                                                                                         |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------+
select id,group_concat(name) isname from boluo group by depno;

查询结果:

+------+-------------------------------------------------------------------------------------------------------------------------------------------+
| id   | isname                                                                                                                                    |
+------+-------------------------------------------------------------------------------------------------------------------------------------------+
|    1 | 菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗,菠萝吹雪,梨花诗                                           |
|    1 | 陆小果,橙留香                                                                                                                             |
|    1 | 上官子怡,天下无贼                                                                                                                         |
+------+-------------------------------------------------------------------------------------------------------------------------------------------+

可以比较两条语句,能看到不同点的

7、分组数据查询----实现多个字段分组查询

select depno from boluo​     group by depno;
+-------+
| depno |
+-------+
|    10 |
|    20 |
|    30 |
+-------+
select depno,birthday​       from boluo​     group by depno,birthday;
+-------+------------+
| depno | birthday   |
+-------+------------+
|    10 | 1900-01-01 |
|    10 | 1900-07-07 |
|    20 | 1900-02-01 |
|    20 | 1900-09-07 |
|    30 | 1900-02-01 |
|    30 | 1900-09-07 |
+-------+------------+
select depno,birthday,group_concat(name),count(name)​        from boluo​     group by depno,birthday;
+-------+------------+-------------------------------------------------------------------------------+-------------+
| depno | birthday   | group_concat(name)                                                                          | count(name) |
+-------+------------+-------------------------------------------------------------------------------+-------------+
|    10 | 1900-01-01 | 菠萝吹雪,菠萝吹雪,菠萝吹雪,菠萝吹雪,菠萝吹雪,菠萝吹雪      |           6 |
|    10 | 1900-07-07 | 梨花诗,梨花诗,梨花诗,梨花诗,梨花诗,梨花诗                                 |           6 |
|    20 | 1900-02-01 | 陆小果                                                                                                          |           1 |
|    20 | 1900-09-07 | 橙留香                                                                                                          |           1 |
|    30 | 1900-02-01 | 上官子怡                                                                                                     |           1 |
|    30 | 1900-09-07 | 天下无贼                                                                                                     |           1 |
+-------+------------+-------------------------------------------------------------------------------+-------------+

8、分组数据查询–实现having字句限定分组查询

在MySQL软件中如果想实现对分组进行条件限制,决不能通过关键字where来实现,因为该关键字主要用来实现条件限制数据记录。为解决上述问题,MySQL软件专门提供了关键字having来实现条件限制分组数据记录。

having关键字查询语法形式如下

select function(field)​      from table_name​        where condition​        group by field,field,field,...,fieldn​      having condition;

MySQL单表数据查询之分组数据查询之旅相关推荐

  1. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  2. MySQL单表数据量过千万,采坑优化记录,完美解决方案

    MySQL单表数据量过千万,采坑优化记录,完美解决方案 参考文章: (1)MySQL单表数据量过千万,采坑优化记录,完美解决方案 (2)https://www.cnblogs.com/ExMan/p/ ...

  3. mysql 单表数据_Mysql--单表数据记录查询

    1.简单数据记录查询 1.1 简单数据查询 1.1.1 查询所有字段数据 例子: 1.1.2 "*"符号的使用 语法: 例子: 1.1.3 查询指定字段数据 例子: 1.2 避免重 ...

  4. mysql单表数据列_MySQL 之 数据操作及单表查询

    1.数据操作 (1)insert 增加数据 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: ...

  5. “数据中台、读写分离、表分区”解决MySQL 单表数据量、并放量双高的效率瓶颈

    需求情景:现有一数据库表,用于记录每一台设备的各种指标项数据,每台设备指标项约150个左右,共有10台设备(后期还会增加),每台设备每2秒写入1次数据,即:数据库单表每秒写入数据量=10台设备*150 ...

  6. MySQL单表数据量超1亿,根据 索引列 批量删除数据

    我的场景:MySQL8有个表数据量超1亿,然后我要根据某个例(一对多)删除数据, 我直接用:delete from 表 where 字段 in (select 其他表)     条件用in的方式执行报 ...

  7. mysql 单表2000多万条数据,模糊查询如何秒回

    mysql 单表数据2000多万,没有分区.没有表.没有分库,表存储的是企业信息,例如:企业名称.经营范围.注册地址等信息.现在需要通过关键词模糊匹配企业名称,搜索出匹配的数据.因为模糊匹配,所以直接 ...

  8. SQL查询单表数据之组合(三)

    [SQL从一点一滴分析系列文章]为实际开发中的点点滴滴的总结,从最最简单的SQL 查询 到 综合分析查询 在分析 SQL 时,也会同时分析 mybatis .Hibernate 中的相关操作 点击查看 ...

  9. 数据库性能优化—MySQL单表最大记录数超过多少时性能会严重下降

    以前没有想过MySQL数据库的单表最大行数,直到最近interview时被问到c语言中int类型的最大值是多少时才想到Mysql单表最大行数的问题. 一开始被问到C语言中int类型的最大值有点懵逼,一 ...

  10. MySQL单表最大记录数超过多少时性能会严重下降?

    问题:MySQL单表最大记录数不能超过多少? 以前没有想过MySQL数据库的单表最大行数,直到最近interview时被问到c语言中int类型的最大值是多少时才想到Mysql单表最大行数的问题. 一开 ...

最新文章

  1. eclipse字体大小设置_Java 设置Excel单元格格式—基于Spire.Cloud.SDK for Java
  2. 使用css3实现瀑布流布局效果
  3. 简单的C语言程序合集-2
  4. 数据结构-使用两个栈实现一个队列
  5. 开源内容管理系统 php mysql_30 个很棒的PHP开源CMS内容管理系统小结
  6. Mysql中索引的 创建,查看,删除,修改
  7. 最新解决vscode中文乱码问题
  8. numpy: np.asarray 函数
  9. C语言12之什么是字符串类型?
  10. linux软路由关闭超线程,废掉硬路由,组建软路由的详细教程(图)
  11. 本学期在实验室的收获
  12. SIFT算法特征描述子构建---关键点定位原理及代码
  13. wps交叉表_WPS交叉引用的使用方法
  14. 教你解决线上频出MySQL死锁问题
  15. Warning: componentWillMount has been renamed, and is not recommended for use
  16. 来自http://blog.csdn.net/a837199685
  17. matlab语言及应用期末试卷,《MATLAB语言及应用》期末考试试题
  18. Java把xx年xx月xx日(星期x) 上午xx点xx分转换Date类型
  19. 程序无法启动因为计算机丢失msvcr110,解决启动Apache时出现因为计算机丢失MSVCR110.dll文件...
  20. Task02 几何变换

热门文章

  1. python的并行计算框架
  2. phython编写图形界面
  3. html制作钟表盘,CSS3简易表盘时钟
  4. 十大最佳Android游戏下载平台
  5. Python项目:学生管理系统(数据库)
  6. mbp touchbar设置_macbookpro touchbar 怎么添加锁屏快捷键
  7. 事件委托(事件代理)是什么?有什么用?
  8. 实验6 熟悉Hive的基本操作
  9. 无线wifi盒子用不用拉网线?
  10. 基于auto.js的微信朋友圈自动点赞脚本