【MySQL新手入门系列四】:手把手教你MySQL数据查询由入门到学徒

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: SQL语言是与数据库交互的机制,是关系型数据库的标准语言。SQL语言可以用于创建、修改和查询关系数据库。SQL的SELECT语句是最重要的命令之一,用于从指定表中查询数据。在此博客中,我们将进一步了解SELECT语句以及WHERE子句以及它们的重要性。

SQL语言是与数据库交互的机制,是关系型数据库的标准语言。SQL语言可以用于创建、修改和查询关系数据库。SQL的SELECT语句是最重要的命令之一,用于从指定表中查询数据。在此博客中,我们将进一步了解SELECT语句以及WHERE子句以及它们的重要性。

前面我们已经大致讲了一下mysql的安装等介绍,MySQL 中的“新增、删除与修改”操作。但是查询太重要了,我们再花点时间来说道说道。

一、介绍SQL的SELECT语句以及WHERE子句

这里我们再啰嗦几句。

SELECT语句是SQL语言的核心命令之一,它可以从一个或多个表中选取数据。语法如下:

SELECT 列名1,列名2... FROM 表名;

在该语法中,列名指定从表中返回的数据列,表名指定从中选择数据的数据表。此外,还可以使用一些其他的关键字来改变数据的返回。

WHERE子句是SQL所拥有的条件选择语句,它可以筛选出表中符合条件的数据。WHERE子句通常与SELECT语句结合使用,以在返回的结果中过滤数据。

SELECT 列名1, 列名2... FROM 表名 WHERE 条件

条件可以是简单或复杂的表达式,包括:

  • 运算符(例如<,>,=,LIKE等)、
  • 函数
  • 逻辑运算符(例如AND和OR)。

二、简单查询

对于简单的查询,我们定义为从某个表里面查询所有数据,也即非常简单的sql语句,没有添加任何附加条件。
以下示例显示本质上是SELECT语句的查询。
查询包括从“trade_user”表中所有数据。

SELECT * FROM trade_user

我们以实际的表来举例,如下图所示:
在这里插入图片描述

三、过滤查询

在MySQL中,过滤查询通常使用WHERE语句。
WHERE语句可以用来筛选出符合特定条件的记录,可以使用各种操作符组合条件。

下面是一些常见的过滤查询示例:

  1. 使用等于运算符:
SELECT * FROM stock_info WHERE code = '000001'

以上示例将检索所有code为 000001的记录。运行结果如下:
在这里插入图片描述

  1. 使用不等于运算符:
SELECT * FROM stock_info WHERE exchange != 'sz'

查询所有非深圳市场的股票信息,如下:
在这里插入图片描述

  1. 使用比较运算符:
SELECT * FROM stock_info WHERE code < '000005'

以上示例将检索所有早于2022年1月1日的订单记录。

  1. 使用逻辑运算符:
SELECT * FROM stock_info WHERE code = '000003' or code = '000004'

在这里插入图片描述

  1. 使用IN运算符:
    IN运算符用于在一组值中查找匹配项,各个值之间用逗号隔开。
SELECT * FROM stock_info WHERE code IN (000001,000002,000003)

以上示例将检索所有位于美国或加拿大的客户的记录,与前一个示例相同,只是使用了IN运算符。

  1. 使用BETWEEN运算符:
SELECT * FROM stock_info WHERE code BETWEEN 000001 and 000003

以上示例将检索所有在2021年1月1日和2022年1月1日之间的订单记录。

这些都是一些常用的过滤查询示例,在实际使用中,您可以根据需要使用不同的运算符和组合条件。

四、排序查询

在MySQL中,排序查询使用ORDER BY语句。
ORDER BY语句允许按升序或降序顺序对结果进行排序,可以按一个或多个列进行排序。

ORDER BY语句的语法格式如下:

SELECT column_name(s) FROM table_name ORDER BY column_name1 [ASC|DESC], column_name2 [ASC|DESC], ...;

也可以结合条件语句进行排序
 select * from xxx where xxx order by xxx asc

其中:

  • ASC:按升序排序。
  • DESC:按降序排序。

下面是一些ORDER BY语句的示例:

  1. 单个列排序:
SELECT * FROM stock_info WHERE code BETWEEN 000001 and 000003 order BY id DESC

在这里插入图片描述

  1. 多列排序:
SELECT * FROM stock_info WHERE code BETWEEN 000001 and 000003 order BY state ASC, id DESC

以上示例将按state升序排序,然后按id降序排序,并返回所有列的结果。
注意跟上一个语句进行比较。
在这里插入图片描述

  1. 降序排序:
SELECT * FROM stock_info WHERE code BETWEEN 000001 and 000003 order BY state DESC

以上示例将按客户的姓氏降序排序,并返回所有列的结果。

总之,ORDER BY语句使我们可以根据一个或多个列对记录进行排序,并使其易于查看和分析结果集。

五、分组查询

MySQL中的分组查询,是指将表中的数据按照指定的列或表达式进行分组,并对每个组进行计算的查询操作。
在分组查询中,使用GROUP BY子句来指定所要分组的列名,同时还可以使用聚集函数(例如SUM,AVG,MAX等函数)来对每个组进行计算,从而得到每个组的统计结果。

GROUP BY语句的语法格式如下:

SELECT column_name(s), aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name(s);

其中:

  • column_name(s):要检索的列的名称。
  • aggregate_function:将应用于列上的聚合函数,例如COUNT,SUM等。
  • table_name:要检索的表的名称。
  • condition:WHERE子句中的条件。
  • GROUP BY column_name(s):根据给定的列分组结果。

下面是一些GROUP BY语句的示例:

  1. 按单个列分组:
SELECT COUNT(*) AS total,  name FROM stock_info WHERE code < '000005' GROUP BY `name`

以上示例将返回股票代码及每个股票的数量。
在这里插入图片描述

  1. 按多个列分组:
SELECT COUNT(*) AS total,  code, name FROM stock_info WHERE code < '000005' GROUP BY code,`name`

在这里插入图片描述

总之,GROUP BY语句是一种非常强大的聚合数据的工具,它允许我们根据一个或多个列对数据进行分组,并使用聚合函数计算分组结果的总和、平均值、最小值、最大值等。

六、连接查询

MySQL连接查询是指在查询两个或多个表时,通过特定的连接方式将数据进行关联,以便获得需要的数据。连接查询是基于关系型数据库模型设计的,它能够将多个表中的数据按照特定的条件进行联合,形成一个新的结果集。

MySQL连接查询通常使用JOIN关键字来实现。JOIN关键字有多种类型,包括INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN等,每种JOIN方式都有其特定的语法格式和用途。在连接查询中,JOIN关键字表示要根据哪个列或哪些列进行表的关联,以及关联方式的类型。

下面是一个MySQL连接查询的基本语法:

SELECT table1.column1, table2.column2...
FROM table1
JOIN table2
ON table1.column = table2.column;

其中,
table1和table2是要连接的表,
column1和column2是要查询的列,
ON后面的条件表示连接两个表时所用的条件(一般是表中列的相等条件)。
JOIN关键字其实是INNER JOIN关键字的简写形式,如果需要使用LEFT JOIN或RIGHT JOIN等其他类型的连接方式,则需要在JOIN关键字前加上相应的关键字。

例如,下面是一个连接查询使用LEFT JOIN关键字的语法:


SELECT stock_info.code, stock_selected.code FROM stock_info LEFT JOIN stock_selected ON stock_info.code = stock_selected.code  WHERE stock_info.code = stock_selected.code

我们可以简化一下代码

SELECT a.code, b.code FROM stock_info as a LEFT JOIN stock_selected as b ON a.code = b.code  WHERE a.code = b.code

在这里插入图片描述

在连接查询中,如果要查询多个表,则可以在前面的JOIN语句后面继续添加其他的JOIN语句,从而将多个表连接在一起。

连接查询是关系型数据库中一种非常常用的查询方式,它能够在多个表之间建立联系,并以此展示多表信息的整合结果。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
83 0
|
22天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
52 5
|
1月前
|
关系型数据库 MySQL 数据库
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
59 5
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
4月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
61 0
「Python入门」python操作MySQL和SqlServer
|
4月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
57 2
|
5月前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DQL(数据查询语言)深度解析与实践
MySQL DQL(数据查询语言)深度解析与实践
|
4月前
|
存储 关系型数据库 MySQL
MySQL小白教程:从入门到查询高手
MySQL小白教程:从入门到查询高手