Mysql数据库(四) Mysql命令行客户端数据条件查询、排序、分组、聚合函数

news2024/11/23 7:10:32

目录

一、where条件查询

① 查询年龄大于/等于18岁的学生记录。

② 查询名字以张开头的学生记录。

③ 范围查询

二、order by 排序

① 按照name列升序排序

② 按照name列降序排序

③ 先按 name 降序,再按 age 升序排序

④ 可以使用表达式或函数来进行排序 比如按照 age + height 的结果 进行降序

三、limit 分页

查询结果中获取第1页和每页2行数据,

获取第2页,一页2行的数据

四、聚合函数

1. 使用COUNT函数:

2. 使用SUM函数:

3. 使用AVG函数:

4. 使用MAX函数:

5. 使用MIN函数:

五、分组 group by


前面介绍了Mysql数据库的增删改,查询操作其实是我们在开发中使用最多的操作

一、where条件查询

MySQL中的WHERE语句用于对表中的数据进行筛选和过滤。使用WHERE语句可以根据指定的条件来查询符合条件的数据。

下面是WHERE语句的基本语法

SELECT column1, column2, ...
FROM table_name
WHERE condition;

其中,condition是WHERE语句的条件,可以使用各种操作符和函数来实现条件的筛选

以下是常用的WHERE条件查询操作符:

  • 等于:=
  • 不等于:<>或者!=
  • 大于:>
  • 小于:<
  • 大于等于:>=
  • 小于等于:<=
  • BETWEEN:查询范围内的值,如:BETWEEN value1 AND value2
  • LIKE:模糊查询,如:LIKE 'value%'
  • IN:查询指定范围内的值,如:IN (value1, value2, ...)
  • IS NULL:查询值为空的记录,如:IS NULL
  • IS NOT NULL:查询值不为空的记录,如:IS NOT NULL

示例:

① 查询年龄大于/等于18岁的学生记录。

mysql> select * from stu where age >=18;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
+----+--------+------+--------+--------+
4 rows in set (0.00 sec)

mysql> 

② 查询名字以张开头的学生记录。

mysql> SELECT * FROM stu WHERE name LIKE '张%';
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  8 | 张飞   |    0 | 180.00 | NULL   |
+----+--------+------+--------+--------+
3 rows in set (0.00 sec)

mysql> 

③ 范围查询

mysql> SELECT * FROM stu WHERE age BETWEEN 18 AND 60;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
+----+--------+------+--------+--------+
4 rows in set (0.00 sec)

mysql> 

二、order by 排序

在MySQL中,使用`ORDER BY`子句来对查询结果进行排序

`ORDER BY`子句需要指定要按哪一个列进行排序,也可以多个列

默认排序是升序排序(从最小值到最大值)

如果需要降序排序,可以使用`DESC`关键字

例如:

① 按照name列升序排序

mysql> select * from stu order by name;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  7 | 关羽   |    0 | 185.00 | NULL   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
|  6 | 刘备   |    0 | 165.00 | NULL   |
|  9 | 孙权   |    0 | 170.00 | NULL   |
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  8 | 张飞   |    0 | 180.00 | NULL   |
+----+--------+------+--------+--------+
8 rows in set (0.00 sec)

mysql> 

② 按照name列降序排序

mysql> select * from stu order by name DESC;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  8 | 张飞   |    0 | 180.00 | NULL   |
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  9 | 孙权   |    0 | 170.00 | NULL   |
|  6 | 刘备   |    0 | 165.00 | NULL   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
|  7 | 关羽   |    0 | 185.00 | NULL   |
+----+--------+------+--------+--------+
8 rows in set (0.00 sec)

mysql> 

③ 先按 name 降序,再按 age 升序排序

mysql> select * from stu order by name DESC,age ASC;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  8 | 张飞   |    0 | 180.00 | NULL   |
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
|  9 | 孙权   |    0 | 170.00 | NULL   |
|  6 | 刘备   |    0 | 165.00 | NULL   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
|  7 | 关羽   |    0 | 185.00 | NULL   |
+----+--------+------+--------+--------+
8 rows in set (0.00 sec)

④ 可以使用表达式或函数来进行排序 比如按照 age + height 的结果 进行降序

mysql> select * from stu order by age+height DESC;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  7 | 关羽   |    0 | 185.00 | NULL   |
|  8 | 张飞   |    0 | 180.00 | NULL   |
|  9 | 孙权   |    0 | 170.00 | NULL   |
|  6 | 刘备   |    0 | 165.00 | NULL   |
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
+----+--------+------+--------+--------+
8 rows in set (0.00 sec)

mysql> 

 

 

注意,如果在查询中使用了`GROUP BY`子句,则需要在`ORDER BY`中指定相同的列

三、limit 分页

在MySQL中,可以使用LIMIT语句来进行分页

LIMIT语句用于指定从查询结果集中返回的行数

例如,

查询结果中获取第1页和每页2行数据,

mysql> select * from stu limit 0,2;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  1 | 张三   |   18 |  68.00 | 保密   |
|  2 | 张三   |   18 |  68.00 | 保密   |
+----+--------+------+--------+--------+
2 rows in set (0.00 sec)

mysql> 

其中,第一个参数指定了从结果集中的第几行开始返回数据,从0开始计数,即0表示第1行;第二个参数指定了要返回的行数

获取第2页,一页2行的数据

可以将查询起始行数改为2,

mysql> select * from stu limit 2,2;
+----+--------+------+--------+--------+
| id | name   | age  | height | gender |
+----+--------+------+--------+--------+
|  3 | 刘伟   |   23 | 100.00 | 男     |
|  4 | 刘伟   |   23 | 100.00 | 男     |
+----+--------+------+--------+--------+
2 rows in set (0.00 sec)

mysql>

 

依此类推,每次查询时只需要改变LIMIT语句中的起始行数即可实现分页查询。

四、聚合函数

在MySQL中,有五个聚合函数可供使用:

1. COUNT:用于返回某列的行数或非NULL值的数量。

2. SUM:用于返回某列的总和。

3. AVG:用于返回某列的平均值。

4. MAX:用于返回某列的最大值。

5. MIN:用于返回某列的最小值。

以下是每个聚合函数的使用示例:

1. 使用COUNT函数:

返回表中的总行数

mysql> select count(*)  from stu;
+----------+
| count(*) |
+----------+
|       20 |
+----------+
1 row in set (0.02 sec)

mysql> 

返回 age 列中的行数

mysql> select count(age)  from stu;
+------------+
| count(age) |
+------------+
|         20 |
+------------+
1 row in set (0.00 sec)

mysql> 

2. 使用SUM函数:

 返回 age 列中的总和
 

mysql> select sum(age)  from stu;
+----------+
| sum(age) |
+----------+
|       82 |
+----------+
1 row in set (0.00 sec)

3. 使用AVG函数:

 返回 age 列中的平均值
 

mysql> select avg(age)  from stu;
+----------+
| avg(age) |
+----------+
|   4.1000 |
+----------+
1 row in set (0.00 sec)

4. 使用MAX函数:

返回age列中的最大值

mysql> select max(age)  from stu;
+----------+
| max(age) |
+----------+
|       23 |
+----------+
1 row in set (0.00 sec)

5. 使用MIN函数:

返回age列中的最小值

mysql> select min(age) from stu;
+----------+
| min(age) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> 

注意,聚合函数一般会和GROUP BY语句一起使用,用于对分组后的数据做聚合计算。

五、分组 group by

MySQL中的GROUP BY子句可用于将结果集按照一个或多个列进行分组,然后对每个分组执行聚合函数计算。

它的语法如下:

SELECT column1, SUM(column2)
FROM table_name
GROUP BY column1;

在这个示例中,我们按照`column1`列分组,并对`column2`列进行求和计算。

mysql> select name,sum(age) from stu group by name;
+--------+----------+
| name   | sum(age) |
+--------+----------+
| 张三   |       36 |
| 刘伟   |       46 |
| 刘备   |        0 |
| 关羽   |        0 |
| 张飞   |        0 |
| 孙权   |        0 |
+--------+----------+
6 rows in set (0.00 sec)

mysql> 

GROUP BY子句必须放在WHERE子句之后ORDER BY子句之前

GROUP BY子句还支持多列分组,可以按照多个列进行分组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Nginx】Nginx负载均衡

Nginx 负载均衡 1.Nginx 负载均衡1.1 官方文档1.2 默认方式:轮询(round-robin)1.3 链接最少、空闲(least-connected)1.4 会话持续,也叫ip 哈希(Session persistence)1.5 服务器权重&…

前端学习——CSS3

新增长度单位 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>Document</title><style>* {margin: 0;padding: 0;}.box1 {width: 200px;height: 200px;background-color: deepskyblue;…

JMeter元件

【测试计划–线程组/Threads(Users)】 模拟大量用户负载的情况&#xff0c;线程组可以设置运行的线程数(多少线程就代表多少用户)&#xff1b; 【测试计划–线程组–取样器/sampler】 用来模拟用户操作&#xff0c;向服务器发出http请求、Webservice请求、java请求等&#xf…

采用VMD按照某一坐标轴旋转坐标结构

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩&#xff01; 主要专栏内容包括&#xff1a; †《LAMMPS小技巧》&#xff1a; ‾ \textbf…

【设计模式】第七章:代理模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

二叉树 — 折纸问题

题目&#xff1a; 一道Google真实出现过的面试题 将一段纸条放在桌上&#xff0c;然后从纸条下边向上方对折1次&#xff0c;压出折痕后展开&#xff0c;此时折痕是凹下去的&#xff08;称为凹折痕&#xff09;&#xff0c;即折痕凸起的方向指向纸条的背面。如果从纸条的下边向上…

CodeForces..碰撞字符.[简单].[遍历求最大连续]

题目描述&#xff1a; 题目解读&#xff1a; 输入仅由<和>组成的字符串s&#xff0c;给定数组a&#xff0c;a满足 a[i] 和 a[i1] 之间的比较运算符为 s[i] 给出字符串a中不同字符的最小个数。 解题思路&#xff1a; 判断字符<和>的最大连续次数即可&#xff0c;…

MySQL注入-SQLi-Less1笔记

前置知识点&#xff1a; 1. SELECT 1,2,3 用于查询数据通道的方式 例如Less-1中,Secury数据库中的users表结构如下&#xff0c;可以看到有散列&#xff0c;当用户在页面输入id的时候&#xff0c;会查询到对应的散列数据也就是<id>/<username>/<password>&a…

复健练习1—取模与快速幂

复建练习1—取模与快速幂 A&#xff0c;poj3070 没啥可说的&#xff0c;就是裸的矩阵快速幂 #include <algorithm> #include <iostream> #include <cstring> #include <cmath> #include <iomanip>using namespace std; typedef long long ll;…

微服务: 03-rabbitmq在springboot中如何使用(下篇)

目录 前言: 上文传送 4.六大模式实际操作(续) 4.4 路由模式: ---> 4.4.1 消费者配置类 ---> 4.4.2 消费者代码 --->4.4.3 生产者代码 4.5 主题模式: (路由升级版) ---> 4.5.1 消费者配置类 ---> 4.5.2 消费者代码 ---> 4.5.3 生产者代码 ---&g…

【大语言模型】15分钟快速掌握LangChain以及ChatGLM

10分钟快速掌握LangChain LangChain简介LangChain中的核心概念1. Components and Chains2. Prompt Templates and Values3. Example Selectors4. Output Parsers5. Indexes and Retrievers6. Chat Message History7. Agents and Tookits LangChain的代码结构1. LangChain中提供…

Ubuntu学习笔记(一)——目录与路径

文章目录 前言一、相对路径与绝对路径1.绝对路径&#xff08;absolute&#xff09;2.相对路径&#xff08;relative&#xff09; 二、目录相关操作命令1.cd(change directory, 切换目录)2.pwd(print working directory, 显示目前所在的目录)3.mkdir(make directory, 建立新目录…

Versioning data and models for rapid experimentation in machine learning

翻译博客&#xff1a;https://medium.com/pytorch/how-to-iterate-faster-in-machine-learning-by-versioning-data-and-models-featuring-detectron2-4fd2f9338df5 在本文中&#xff0c;您将学习如何创建和使用版本化的数据集作为可重现的机器学习流程的一部分。为了说明这一…

自定义MVC工作原理

目录 一、MVC二、MVC的演变2.1 极易MVCController层——Servletview层——JSP缺点&#xff1a;Servlet过多、代码冗余 2.2 简易MVCController层——Servletview层——JSP缺点&#xff1a;在Servlet中if语句冗余 2.3普易MVCController层——Servletview层——JSP缺点&#xff1a…

OBS播放NDI源

下载OBS Studio的NDI运行时和插件 https://github.com/obs-ndi/obs-ndi/releases 下载文章中的下面这两个文件,并直接双击安装。 或者从百度云下载也行: 链接:https://pan.baidu.com/s/1vNn1yMdCy6BZkKxKCq-kDw 提取码:cxxg 安装完成之后,打开OBS Studio 点击加号添…

RabbitMQ系列(11)--RabbitMQ交换机(Exchange)简介

1、交换机概念 生产者生产的消息从不会直接发送到队列&#xff0c;生产者只能把消息发送到交换机&#xff08;Exchange&#xff09;&#xff0c;交换机接收来着生产者的消息&#xff0c;另一方面把消息推入队列&#xff0c;交换机必须知道如何处理收到的消息&#xff0c;是应该…

【设计模式】第十五章:责任链模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

银河麒麟服务器v10 sp1 nginx开机自动启动

接上一篇&#xff1a;银河麒麟服务器v10 sp1 安装 nginx_csdn_aspnet的博客-CSDN博客 设置开机自启动 定义服务启动文件内容&#xff1a; [Unit] Descriptionnginx - high performance web server Afternetwork.target remote-fs.target nss-lookup.target [Service] Ty…

menuconfig selected by 怎么处理

比方说我想取消掉flex&#xff0c;但是被强制生成了&#xff1a; 输入搜索命令查了一下&#xff1a; 搜一下selected by [y] 中的 linux_pam: 取消掉 这样就不用编flex了。

【HarmonyOS】元服务启动命令漫谈

在日常开发中&#xff0c;我们可以通过DevEco Studio&#xff0c;直接Run我们的元服务工程&#xff0c;在测试机上拉起我们开发的元服务页面。但是我们自己打包HarmonyOS元服务hap在手机上安装后是没有桌面图标的。虽然我们可以在设置的服务管理中找到我们安装的元服务&#xf…