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

news2024/10/7 16:27:02

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

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

【MySQL新手入门系列一】:手把手教你入门MySQL

【MySQL新手入门系列二】:手把手教你入门MySQL - 数据库及数据表操作

【MySQL新手入门系列三】:MySQL的新增、删除与修改操作

目录

    • 一、介绍SQL的SELECT语句以及WHERE子句
    • 二、简单查询
    • 三、过滤查询
    • 四、排序查询
    • 五、分组查询
    • 六、连接查询

一、介绍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语句,从而将多个表连接在一起。

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

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

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

相关文章

PCB设计实验|第一周|2月27日

目录 一、实验原理 二、实验环境 三、实验结果 四、实验总结 一、实验原理 Altium Designer 提供了唯一一款统一的应用方案&#xff0c;其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的…

Axure基础:中继器与热区

一、中继器 1、中继器的主要作用 中继器就是临时的数据库&#xff0c;在我们需要当前原型图存储和变更一些数据的时候会经常用到。 能用到中继器的一般都是高保真原型&#xff0c;如果不需要大量的数据动态展示&#xff0c;那么几乎用不到或者搞动态面板也可以实现。 下面我…

selenium之元素定位

一、selenium安装 pip3 install selenium 二、安装浏览器驱动 1&#xff1a;下载最新的浏览器驱动 chrome浏览器驱动下载地址&#xff1a; https://registry.npmmirror.com/binary.html?pathchromedriver/ 查看自己电脑上安装的chrome浏览器版本号&#xff0c;驱动和浏览…

【工程实践】python实现多进程

1 多线程与多进程 Python中比较常见的并发方式主要有两种&#xff1a;多线程和多进程。 1-1 多线程 多线程即在一个进程中启动多个线程执行任务。一般来说使用多线程可以达到并行的目的&#xff0c;但由于Python中使用了全局解释锁GIL的概念&#xff0c;导致Python中的多线程并…

Doo Prime 德璞资本:怎么买原油期货?原油期货买卖策略分享

随着中国经济市场的逐步开放&#xff0c;也为了快速和国际金融接轨&#xff0c;我国于2018年3月26日正式挂牌上市原油期货交易。并且我国的原油期货交易合约和美原油期货和布伦特原油期货交易是相互影响的&#xff0c;这让中国投资者可以足不出户的进行原油期货投资。那么在国内…

Jconsole 开启远程连接遇到的一些坑

最近在学习 JVM&#xff0c;其中涉及到性能、内存等指标分析需要使用工具分享&#xff0c;Java 提供了几个可视化工具来监控和管理 Java 应用&#xff0c;比如 Jconsole、JVisual、JMC&#xff0c;他们以图形化的界面实时的监控程序各种性能指标以及内存、CPU 的使用情况。 Jco…

Triton教程 --- 模型管理

Triton教程 — 模型管理 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器 Triton 提供的模型管理 API 是 HTTP/REST 和 GRPC 协议的一部分&#xff0c;也是 C API 的一部分。 Triton 以三种模型控制模式之一…

5.实用干货-你可能没留意的几个生信基础

Reads&#xff1a;高通量测序平台产生的序列。 Raw Reads&#xff1a;原始下机数据称为Raw Reads&#xff08;Raw data&#xff09;。 Clean Reads&#xff1a;通过生物信息的方法&#xff0c;去除一些质量差的reads&#xff08;比如测序错误&#xff0c;长度小于20的reads&a…

TypeScript零基础入门之背景介绍和环境安装

一、什么是TypeScript TypeScript是一种由微软开发和维护的开源编程语言。它是JavaScript的超集&#xff0c;意味着任何JavaScript程序都是一种有效的TypeScript程序。TypeScript添加了静态类型、类、接口、枚举和命名空间等概念&#xff0c;同时支持ES6特性。TypeScript被视为…

Flutter 初探原生混合开发

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/131320733?spm1001.2014.3001.5501 本文出自 容华谢后的博客 0.写在前面 现如今跨平台技术被越来越多的开发者提起和应用&#xff0c;从最早的Java到后来的RN、Weex&#xff0c;到现在的Co…

每日学术速递6.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Video-ChatGPT: Towards Detailed Video Understanding via Large Vision and Language Model 标题&#xff1a;Video-ChatGPT&#xff1a;通过大型视觉和语言模型实现详细的视频理…

SCI论文插图怎么做?有这一篇文章就够了

SCI插图的整体要求 SCI杂志种类很多&#xff0c;对插图的要求也各有不同&#xff0c;但是以下几条是通用的&#xff1a; 1. 插图尺寸要符合SCI期刊要求 2. 同篇文稿插图中文字须统一字号及字体 3. 须提交SCI期刊指定文件类型的插图 4. 插图文件命名须符合SCI期…

C++基础(15)——STL常用算法(遍历和查找)

前言 本文介绍了C中STL常用遍历和查找算法。 9.1&#xff1a;常用遍历算法&#xff08;for_each、transform&#xff09; 9.1.1&#xff1a;foreach for_each&#xff1a;遍历容器&#xff0c;transform&#xff1a;搬运一个容器中的数据到另一个容器中 for_each中使用普通…

自建iOS消息推送服务Bark

老苏的 DSM6.17 系统恢复之后&#xff0c;发现丢了一些套件&#xff0c;在安装 phpMyAdmin 套件时&#xff0c;显示需要用到 PHP7.4 但是在套件里搜索却只有 PHP7.3 从 https://archive.synology.cn/download/Package/PHP7.4 下载了最低的 7.4.9-0003 手动安装时居然显示 DSM6.…

Java进程调度的基本过程(详细易理解)

目录 一.什么是进程? 二.进程是如何创建的 三.进程如何调度的 优先级: 状态: 记账信息: 上下文: 线程是什么: 为什么要有线程: 坏处: 一.什么是进程? 了解这个问题之前,我们需要先打开我们桌面上的的学习资料 啪的一下,很快啊,点双击学习资料.exe之后,在后台(ctrl…

spring security oauth2 整合 JWT

前言 在这个基础上&#xff0c;进行整合。 spring security oauth2学习 -- 快速入门_本郡主是喵的博客-CSDN博客 1.jwt的一般使用 先把 reids,common-pools 等依赖删掉。 删掉redis的下相关配置 1.1 导入依赖 <!--jjwt--><dependency><groupId>io.json…

正则表达式(2)

文章目录 正则表达式一.正则表达式1.含义2.通配符2.1通配符含义作用2.2常见的通配符 3.元字符&#xff08;字符匹配&#xff09;4.表示次数5.位置锚定6.分组或其他 二.扩展正则表达式1.表示次数2.举例 正则表达式 一.正则表达式 1.含义 &#xff08;1&#xff09;是一种特殊…

基于Java智慧城市实验室主页系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

一、枚举类型——常量特定方法

Java 的枚举机制可以通过为每个枚举实例编写不同的方法&#xff0c;来赋予它们不同的行为。要实现这一点&#xff0c;你可以在枚举类型中定义一个或多个抽象方法&#xff0c;然后为每个枚举实例编写不同的实现&#xff0c;例如&#xff1a; ConstantSpecificMethod.java import…

使用 TensorFlow.js 将机器学习引入您的 Web 应用程序

如何使用 TensorFlow.js 在您的 Web 应用程序中实施机器学习 原文作者: Abhay Singh Rathore 机器学习 (ML) 不再是一个崇高、遥不可及的概念。借助 TensorFlow.js 等库&#xff0c;开发人员现在可以将 ML 整合到他们的 Web 应用程序中。例如&#xff0c;您可以创建一个系统&am…