目录

总汇表

order by使用举例

[group by使用举例](#group by使用举例)

limit举例

[group by 与order by 联合使用](#group by与order by联合使用)

having的使用

[SQL运行结果查询](# SQL运行结果查询 )

总汇表

order by 排序 desc降序 asc升序
group by 分组 (一般与聚集函数连用)
having 对组进行限制与聚集函数连用
Limit 分页
Avg 聚集函数:求平均值
Sum 聚集函数:求和(数值的加法)
Max 聚集函数:求最大值
Min 聚集函数:求最小值
count 聚集函数:相同列值求行数的和

where子句作用于表和视图,HAVING 子句作用于组;

where子句中不能使用聚集函数,而having子句中可以。

有如下表:

CREATE TABLE `grade`  (

  `id` int(11) NOT NULL PRIMARY KEY,

  `name` varchar(20),

  `grades` int(11) ,

) ;

order by使用举例

按照姓名升序排列:

mysql> select * from grade

​    -> order by name asc;

按照姓名降序排序:

mysql> select * from grade

​    -> order by name desc;

group by使用举例

group通常是和别函数一起调用的。(count,sum)

求每个学生姓名的所有成绩总分:

mysql> select name,sum(grades)

​    -> from grade

​    -> group by name;

(解释:首先,要求每个学生的总分数,要把每个学生聚集到一起,然后去把聚集在一起每个学生成绩求和)

求每个学生一共有几个成绩:

mysql> select name,count(name)

​    -> from grade

-> group by name;

(解释:首先把相同name的行聚集到一起,然后用count求出每个name相同的一共有几行)

求每个学生的总成绩:

mysql> select name,sum(grades)

​    -> from grade

-> group by name;

求每个学生的平均成绩:

mysql> select name,avg(grades)

​    -> from grade

​    -> group by name;

求每个学生的成绩最低分:

mysql> select name,min(grades)

​    -> from grade

​    -> group by name;

limit举例

limit 参数1:显示查询结果的前‘参数1’个数据;

limit 参数1 参数2:跳过查询结果的前‘参数1’个数据,显示剩下的前‘参数2’个数据

取前三个查询结果:

mysql> select * from grade

-> limit 3;

group by 与order by 联合使用

求总成绩排名前二的学生:

mysql> select name,sum(grades) as a

​    -> from grade

​    -> group by name

​    -> order by a desc

-> limit 2;

having的使用

查询所有学生总成绩大于100的学生:

mysql> select name,sum(grades)

​    -> from grade

​    -> group by name

​    -> having sum(grades)>100;

SQL运行结果查询

数据输入

INSERT INTO `grade` VALUES (0, '1', 10);
INSERT INTO `grade` VALUES (1, '1', 10);
INSERT INTO `grade` VALUES (2, '2', 20);
INSERT INTO `grade` VALUES (3, '3', 30);
INSERT INTO `grade` VALUES (4, '4', 40);
INSERT INTO `grade` VALUES (5, '1', 100);
INSERT INTO `grade` VALUES (6, '2', 100);

运行结果查询:

按照姓名升序排列:
mysql> select * from grade
-> order by name asc;
+----+------+--------+
| id | name | grades |
+----+------+--------+
| 0 | 1 | 10 |
| 1 | 1 | 10 |
| 5 | 1 | 100 |
| 2 | 2 | 20 |
| 6 | 2 | 100 |
| 3 | 3 | 30 |
| 4 | 4 | 40 |
+----+------+--------+
按照姓名降序排序:
mysql> select * from grade
-> order by name desc;
+----+------+--------+
| id | name | grades |
+----+------+--------+
| 4 | 4 | 40 |
| 3 | 3 | 30 |
| 2 | 2 | 20 |
| 6 | 2 | 100 |
| 0 | 1 | 10 |
| 1 | 1 | 10 |
| 5 | 1 | 100 |
+----+------+--------+
求每个学生姓名的所有成绩总分:
mysql> select name,sum(grades)
-> from grade
-> group by name;
+------+-------------+
| name | sum(grades) |
+------+-------------+
| 1 | 120 |
| 2 | 120 |
| 3 | 30 |
| 4 | 40 |
+------+-------------+
求每个学生一共有几个成绩:
mysql> select name,count(name)
-> from grade
-> group by name;
+------+-------------+
| name | count(name) |
+------+-------------+
| 1 | 3 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
+------+-------------+
求每个学生的总成绩:
mysql> select name,sum(grades)
-> from grade
-> group by name;
+------+-------------+
| name | sum(grades) |
+------+-------------+
| 1 | 120 |
| 2 | 120 |
| 3 | 30 |
| 4 | 40 |
+------+-------------+
求每个学生的平均成绩:
mysql> select name,avg(grades)
-> from grade
-> group by name;
+------+-------------+
| name | avg(grades) |
+------+-------------+
| 1 | 40.0000 |
| 2 | 60.0000 |
| 3 | 30.0000 |
| 4 | 40.0000 |
+------+-------------+
求每个学生的成绩最低分:
mysql> select name,min(grades)
-> from grade
-> group by name;
+------+-------------+
| name | min(grades) |
+------+-------------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+------+-------------+
取前三个查询结果:
mysql> select * from grade
-> limit 3;
+----+------+--------+
| id | name | grades |
+----+------+--------+
| 0 | 1 | 10 |
| 1 | 1 | 10 |
| 2 | 2 | 20 |
+----+------+--------+
求总成绩排名前二的学生:
mysql> select name,sum(grades) as a
-> from grade
-> group by name
-> order by a desc
-> limit 2;
+------+-----+
| name | a |
+------+-----+
| 1 | 120 |
| 2 | 120 |
+------+-----+
查询所有学生总成绩大于100的学生:
mysql> select name,sum(grades)
-> from grade
-> group by name
-> having sum(grades)>100;
+------+-------------+
| name | sum(grades) |
+------+-------------+
| 1 | 120 |
| 2 | 120 |
+------+-------------+

MySQL复习值代码知识点(2)的更多相关文章

  1. MySQL复习值代码知识点(1)

    MySQL复习值代码知识点 一. 创建数据库 create database 数据库名: 二. 删除数据库 drop database 数据库名: 三. 选择相应的数据库 use 数据库名: 四. 创 ...

  2. mysql复习-来源考试

    mysql复习-   No1 .登录和权限 (一)常用命令1.登录mysqlmysql -h localhost -u root -p 2.重启mysqlservice mysql restart 延 ...

  3. mysql复习秘籍

    mysql复习 一:复习前的准备 1:确认你已安装wamp 2:确认你已安装ecshop,并且ecshop的数据库名为shop 二 基础知识: 1.数据库的连接 mysql -u -p -h -u 用 ...

  4. MYSQL复习笔记2-自带工具介绍

    Date: 20140102Auth: Jin 一.mysql 命令行客户端1)base-h host-P port--socket=path,-S path用于连接的套接字文件替换使用IP PORT ...

  5. loadrunner动态从mysql取值

    loadrunner动态从mysql取值 [需要下载跟数据库服务器一致的dll,32位或64位] loadrunner中有参数化从数据库中取值,但是只是静态的,对于一些要实时取值的数据就game ov ...

  6. MySQL NULL 值处理

    MySQL NULL 值处理 我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了 ...

  7. Python连接MySQL的实例代码

    Python连接MySQL的实例代码   MySQLdb下载地址:http://sourceforge.net/projects/mysql-python/ 下载解压缩后放到%Python_HOME% ...

  8. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  9. 二十一、MySQL NULL 值处理

    MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...

随机推荐

  1. Android 框架布局 FrameLayout

    <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android=" ...

  2. 记druid 在配置中心下的一个大坑: cpu 达到 100%

    把我们的dubbo 应用移步到配置中心上去之后,发现我们的应用过一段时间就会出现cpu 100%的情况 (大概是12个小时),一开始cpu占用是2-5% 的样子,什么都没做,后面竟然用尽了cpu.. ...

  3. .Net Core组件化视图(部分视图)

    .Net Core组件化视图(部分视图) 1.背景 1.以前我们使用.Net的时候使用部分视图的方式在,.Net Core 中能在单独处理逻辑的部分视图没有了,但是我们还是想使用现在的.Net Cor ...

  4. Java生鲜电商平台-电商会员体系搭建

    Java生鲜电商平台-电商会员体系搭建 说明:因为之前一直从事的是B端的生鲜电商方面的产品,对会员体系方面有深刻的理解,今天来聊一聊会员体系的搭建. 明确会员体系的目的 首先我们需要明确的知道,搭建电 ...

  5. Prism_Composite Commands(3)

    Composite Commands 在许多情况下,视图模型定义的命令将绑定到关联视图中的控件,以便用户可以直接从视图中调用该命令.但是,在某些情况下,您可能希望能够从应用程序UI的父视图中的控件调用 ...

  6. Dotnet Core中使用AutoMapper

    官网:http://automapper.org/ 文档:https://automapper.readthedocs.io/en/latest/index.html GitHub:https://g ...

  7. Spring(4)AOP

    Spring(4)AOP 1.AOP概述 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...

  8. Windows 2012 R2 安装RD服务

    默认只能同时允许2个用户连接,如果希望更多用户同时连接服务器,需要开启并激活远程桌面服务.参考:https://jingyan.baidu.com/article/9f7e7ec0f5a8686f28 ...

  9. 表单生成器(Form Builder)之伪造表单数据mongodb篇

    这篇文章终于回到了正轨:为mongodb伪造数据.之前的随机数.随机车牌照.随机时间还有这篇笔记中的获取指定长度的中文字符串,都是为这篇笔记做准备.看一下我们的准备(基础代码) // 1.获取指定范围 ...

  10. JVM-7-类加载机制

    什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构. ...