聚合

  • 为了快速得到统计数据,提供了5个聚合函数
  • count(*)表示计算总行数,括号中写星与列名,结果是相同的
  • 查询学生总数
select count(*) from students;

  

  • max(列)表示求此列的最大值
  • 查询女生的编号最大值
select max(id) from students where gender=0;

  

  • min(列)表示求此列的最小值
  • 查询未删除的学生最小编号
select min(id) from students where isdelete=;
  • sum(列)表示求此列的和
  • 查询男生的编号之后
select sum(id) from students where gender=1;

  

  • avg(列)表示求此列的平均值
  • 查询未删除女生的编号平均值
select sum(id) from students where gender=1;

  

分组

  • 按照字段分组,表示此字段相同的数据会被放到一个组中
  • 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中
  • 可以对分组后的数据进行统计,做聚合运算
  • 语法
select 列1,列2,聚合... from 表名 group by 列1,列2,列3....
  •   查询男女总数
select gender as 性别,count(*)

from students

group by gender;

分组后的数据筛选

  • 语法:
select 列1,列2,聚合... from 表名
group by 列1,列2,列3....
having 列1,列2,聚合...
having后面的条件运算符与where的相同
  • 查询男生总人数
方案一select count(*)
from students
where gender=1;
-----------------------------
方案二:
select gender as 性别,count(*)
from students
group by gender
having gender=1;

  对比where 与 having

  •  where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
  •  having是对group by的结果进行数据筛选

排序

  • 为了方便查看数据,可以对数据进行排序
  • 语法:
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...

  

  • 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
  • 默认按照列值从小到大排列
  • asc从小到大排列,即升序
  • desc从大到小排序,即降序
  • 查询未删除男生学生信息,按学号降序
select * from students
where gender=1 and isdelete=0
order by id desc;

  

  • 查询未删除科目信息,按名称升序
select * from subject
where isdelete=0
order by stitle;

  

获取部分行

  • 当数据量过大时,分页查询
  • 语法
select * from 表名

limit start,count

  

  • 从start开始,获取count条数据
  • start索引从0开始

实例:分页

  • 已知:每页显示m条数据,当前显示第n页
  • 求总页数
  • 查询总条数p1
  • 使用p1除以m得到p2
  • 如果整除则p2未总数页
  • 如果不整除则p2+1为总数页
  • 求第n页的数据
select * from students

where isdelete=0

limit (n-1)*m,m

  

  • 完整的select语句
select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit star,count

  

  • 执行顺序为:
  • from 表名
    where ....
    group by ...
    select distinct *
    having ...
    order by ...
    limit star,count
  • 实际使用中,只是语句中某些部分的组合,而不是全部

MySQL数据库基本用法-聚合-分组的更多相关文章

  1. mysql数据库查询和聚合函数

    1.模糊查询 like % 表示多个任意字符 _ 表示任意一个字符 例如:查询黄姓同学 select * from student where name '黄%' select * from stud ...

  2. [MySQL]MySQL数据库中如何查询分组后每组中的最后一条记录?

    原文地址:https://codedefault.com/s/how-can-i-retrieve-the-last-record-in-each-group-mysql 问题描述 比如,在MySQL ...

  3. MySql 筛选条件、聚合分组、连接查询

    筛选条件 比较运算符 等于: = ( 注意!不是 == ) 不等于: != 或 <> 大于: > 大于等于: >= 小于: < 小于等于: <= IS NULL I ...

  4. MySQL数据库基本用法

    远程连接数据库 mysql -u root -p #-u 用户名 -h后面写要连接的主机ip地址 -u后面写连接的用户名 -p回车后写密码 回车后输入密码,当前设置的密码为toor 数据库操作 创建数 ...

  5. MySQL数据库基本用法-查询

    查询的基本语法 select * from 表名; from关键字后面写表名,表示数据来源于是这张表 select后面写表中的列名,如果是*表示在结果中显示表中所有列 在select后面的列名部分,可 ...

  6. mysql数据库优化课程---10、mysql数据库分组聚合

    mysql数据库优化课程---10.mysql数据库分组聚合 一.总结 一句话总结:select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from ...

  7. MySQL数据库聚合函数

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库聚合函数时间:2019年2月25日内容:MySQL数据库聚合函数重点:MySQL数据库聚合函 ...

  8. MySQL数据库备份--mysqldump用法

    导出要用到MySQL的mysqldump工具,基本用法是:   shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. ...

  9. MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍,需要的朋友参考下   MySQL数据库insert和update语句引:用于操作数 ...

随机推荐

  1. Python学习【第2篇】:Python数据结构

    Python数据结构 1.数字类型 2.字符串 3.列表 4.元组 5.字典 6.集合

  2. Linux基础实操一

    开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用命令退出虚拟终端2上登录的用户 使用快捷键切 ...

  3. phpmyadmin 安装

    首先,安装mysql $ sudo apt-get install mysql-server$ sudo apt-get install mysql-client安装时输出root用户的密码在安装ph ...

  4. HTML&javaSkcript&CSS&jQuery&ajax(六)

    一.HTML表单 1.<input type="text">定义文本输入的单上输入字段,<form> First name:<br>   < ...

  5. sass编写高质量的css---(基础语法结构)

    一:基础1.Sass:最早也是最成熟的CSS预处理语言2.Less:兼容CSS的最流行的css预处理语言3.Stylus:主要用于node.js社区 二:scss写法1)混入@mixin alert( ...

  6. jmeter 控制线程组执行顺序

    这个要配合全局变量.if和while来实现BeanShell取样器,全局变量:${__setProperty(newswitch,${switch1},)}if条件:"${__P(newsw ...

  7. mysql+redis+memcached

    mysql+redis+memcached 数据库 数据库设计 a. 单表 b. FK(单表:一张表存储时,如果有重复出现的字段为了防止硬盘的浪费,所以做一个FK:去掉FK变成单表(这样子访问速度快了 ...

  8. HDU 1573 X问题(中国剩余定理标准解法)

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  9. CentOS6 YUM安装MariaDB10.3.10

    1.先新增加一个MariaDB.repo vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://mirr ...

  10. python之logging

    1.简单使用 # CRITICAL, ERROR, WARNING, INFO, DEBUG) cewid import logging logging.basicConfig(level=loggi ...