MySQL数据库从入门到精通学习第8天(表数据的查询)
表数据的查询
- 基本查询语句
- 单表查询
- 聚合函数查询
- 多表连接查询
- 子查询
- 合并查询结果
- 定义表和字段的别名
- 使用正则表达式查询
基本查询语句
SELECT 语句非常的强大,是最常用的查询语句。他具有一个固定的格式,如下:
SELECT 查询的内容 FROM 数据表名 WHERE >>>(满足的条件) GROUP BY >>>(对结果进行分组) ORDER BY >>> (对结果进行排序)HAVING >>>(满足的第二个条件) LIMIT >>>(限定输出的行数)
- 这里的查询内容为多列时,使用逗号进行分隔,如下:
SELECT ID,NAME FROM STUDENT_TEXT; - 从多个数据表中查找多个信息时,需要指定每个表中的列,并且数据表也使用逗号进行分隔,如下:
SELECT STUDENT_TEXT1.ID,STUDENT_TEXT1.NAME,STUDENT_TEXT2_TEXT.ID FROM STUDENT_TEXT1,STUDENT_TEXT2;
提示:当同时含有WHERE、GROUP BY、HAVING和聚集函数时,首先执行WHERE子句查找符合条件的数据,然后对符合条件的数据进行分组,分组之后形成的组使用聚集函数计算每一组的值,最后使用HAVING子句去掉不符合条件的组。
需要注意的是:
- HAVING 子句中的每一个元素也必须出现在
查询的内容中 ;HAVING 和 WHERE 子句都可用来限制条件,但是HAVING的使用必须建立在使用GROUP BY的基础之上 ,因为HAVING子句限制的是组,而不是行;WHERE 子句不能使用聚集函数,但是在HAVING子句中可以使用。
单表查询
单表查询指从一个表中查询需要的数据。
-
查询所有字段
SELECT * FROM 表名; -
查询指定字段
SELECT 字段名 FROM 表名; -
查询指定数据
SELECT * FROM 表名 WHERE 查询条件;>>> WHERE子句使用时,需要一些比较运算符来确定查询条件。>>> 例如:SELECT * FROM STUDENT_TEXT WHERE NAME="LISI"; -
带关键字IN的查询
SELECT * FROM 表名 WHERE 条件 [NOT] IN (元素1,元素2...);>>> 表示判断元素是否在集合内。>>> 例如:SELECT * FROM WHERE ID IN(1,2,3); -
带关键字BETWEEN AND的范围查询
SELECT * FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;>>> 查询满足在范围内的条件。>>> 例如:SELECT * FROM WHERE ID BETWEEN 1 AND 5; -
带LIKE的字符匹配查询
SELECT * FROM 表名 WHERE NAME LIKE "%明_";>>>"%"可以匹配一个或多个字符,"-"匹配一个字符。>>> 例如:"%明_"可以匹配***...明* -
用IS NULL关键字查询空值
SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;>>> 查询得字段不为空值>>>例如:SELECT * FROM STUDENT_TEXT WHERE NAME IS NOT NULL; -
带AND的多条件查询
SELECT * FROM 数据名 WHERE 条件1 AND 条件2 [...AND条件表达式n];>>>条件全满足才能被查出来。 -
带OR的多条件查询
SELECT * FROM 数据名 WHERE 条件1 OR 条件2 [...AND条件表达式n];>>> 只要条件有一个满足就能查出来。 -
用DISTINCT关键字去除结果中的重复行
SELECT DISTINCT 字段名 FROM 表名;>>>例如:SELECT DISTINCT NAME FROM STUDENT;表示对NAME字段名重复的行进行合并。 -
用ORDER BY关键字对查询结果排序
SELECT * FROM 表名 ORDER BY [ASC | DESC];>>>DESC(descending order) 表示降序排列,ASC(ascending order)表示升序排列。>>>注意:对排序的列中含有NULL值,如果为升序,NULL放在最前面,如果为降序,NULL放在最后面。 -
用GROUP BY关键字分组查询
SELECT * FROM 表名 GROUP BY 字段名1,字段名2...;>>> 按照哪一列来分类,对多个列用逗号进行分隔。 -
用LIMIT限制查询结果的数量
SELECT * FROM 数据表名 LIMIT 数量;>>> 例如:SELECT * FORM STUDENT LIMIT 3;表示查询数据的前三条。
聚合函数查询
COUNT()函数:COUNT()函数用于对除“*”以外的任何参数,返回所选择的集合中非NULL值得行的数目;如果参数为“*”则返回集合的所用行,包含NULL值的行。没有WHERE子句的COUNT(*)是经过内部优化的,能够快速地返回表中所有的记录总数。
代码如下:
SELECT COUNT(*) FROM 表名 >>>查询表中所有数据行数和。
结果如下:

SUM()函数:求表中某个数据类型字段取值的总和。
代码如下:
SELECT SUM(ID) FROM TEXT;
结果如下:

AVG()函数:求出表中某个数值类型字段取值的平均值。
代码如下:
SELECT AVG(ID) FROM TEXT;
结果如下:

MAX()函数:求出表中某个数值类型字段取值的最大值。
代码如下:
SELECT MAX(ID) FROM TEXT;
结果如下:

MIN()函数:求某个数值类型字段取值的最小值。
代码如下:
SELECT MIN(ID) FROM TEXT;
结果如下:

多表连接查询
多表连接查询指把不同表的记录连接到一起。
- 内连接查询
内连接是最普通的连接类型,而且是最匀称的,因为他们要求构成连接的每个表的共有列匹配,不匹配将被排除。内连接包括相等连接和自然连接,最常见的是相等连接,也就是使用等号运算符,根据每个表共有列的值匹配两个表中的行,最后的结果只包含参与连接的表中与指定字段相符的行。
此时数据库中有TEXT 和 TEXT_1 两个数据表:

代码如下:
SELECT NA,SEX,COURSE,CREATETIME FROM TEXT,TEXT_1 WHERE TEXT.NA = TEXT_1.NA1;

注意:如果要查询表中相同属性的列名下的内容,两个表中的字段名称不能一样,如果一样(都为NA)会报错(
字段列表中的列“NA”不明确)
- 外连接查询
与内连接不同的是,外连接使用OUTER JOIN关键字将两个表连接起来,外连接生成的结果集不仅包括符合连接条件的行数据,而且包括左表(左外连接时的表)、右表(右外连接时的表)或两边连接表(全连接时的表)中所有的数据行。语法格式如下:SELECT 字段名 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.字段名 = 表名2.字段名 2;
左外连接(LEFT JOIN): 指的是将左表中的所有数据分别与右表中的每条数据进行连接组合,返回的结果除内连接的数据外,还包括左表中不符合条件的数据,并在右表的相应列中添加NULL值。代码如下:SELECT NA1,SEX,COURSE FROM TEXT_1 LEFT JOIN TEXT ON TEXT_1.NA1 = TEXT.NA;
插入结果:

右外连接(RIGHT JOIN):指的是将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除内连接的数据外,还包括右表中不符合条件的数据,并在左表的相应列中添加NULL值。代码如下:SELECT NA,SEX,COURSE FROM TEXT_1 RIGHT JOIN TEXT ON TEXT_1.NA1 = TEXT.NA;
结果如下:

复合条件连接查询:在连接查询时(通常用于内连接),也可以增加其他的限制条件,通过多个条件的复合查询(使用WHERE条件语句等),可以使查询结果更加准确。
子查询
子查询就是多个SELECT查询的嵌套,在外面一层的查询中使用里面一层查询产生的结果集。子查询和常规的SELECT查询的执行方式一样,必须包含一个字段列表、一个或多个表名字的FROM子句以及可选的WHERE、HAVING、GROUP BY子句,而且也可以使用关键字进行查询,但是他必须由父查询包围。他的执行方式为从最内层查询开始,然后逐步向外扩展,每个查询产生的结果集都被赋给包围它的父查询,接着这个父查询被执行,其结果也被指定给它的父查询。
-
带IN关键字的子查询
SELECT * FROM 表名 WHERE 条件 [NOT] IN (SELCET语句);>>> 检测结果集中是否存在某个特定的值,如果检测成功则执行外部的查询。 -
带比较运算符的子查询
SELECT * FROM 表名 WHERE 字段名 比较运算符 (SELECT语句); -
带EXISTS关键字的子查询
SELECT * FROM 表名 WHERE EXISTS(SELECT语句);>>>使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个布尔值。如果内层查询语句查询到满足条件的,就返回一个True,此时外层查询执行操作。反之,则为False,此时外层不执行操作或没有查询结果。 -
带ANY关键字的子查询
SELCECT * FROM 表名 WHERE 字段名 比较运算符 ANY (SELECT语句);>>>ANY表示满足其中任意一个条件,通常与比较运算符一起使用,只要满足内层查询语句返回的结果中的任意一个,就可以执行外层查询。 -
带ALL关键字的子查询
SELCECT * FROM 表名 WHERE 字段名 比较运算符 ALL (SELECT语句);>>>ALL表示满足所有内层查询的返回结果,则执行外层查询。
合并查询结果
合并查询结果时将多个SELECT语句的查询结果合并到一起。使用UNION 和 UNION ALL关键字。
- UNION关键字
SELECT语句 UNION SELECT语句;>>>UNION关键字表示将所有的查询结果合并到一起,然后去除相同的记录。 - UNION ALL关键字
SELECT语句 UNION ALL SELECT语句;>>>UNION ALL 关键字只是简单的将结果合并到一起。
定义表和字段的别名
- 表的别名
查询时,可以为表和字段取一个别名,这个别名可以代替其指定的表和字段。为表进行取别名,可以使查询更加的方便,而且可以时查询结果以更加合理的方式显示。通常在表的连接时使用。
SELECT 字段名 FROM 表名1 AS 别名1 LEFT | RIGHT JOIN 表名2 AS 别名2 ON 别名1.字段名 = 别名2.字段名;>>> AS可以使用空格进行代替。
- 字段的别名
查询时字段名会显示默认情况下定义的列名,同样可以为这个列取别名,方便结果的显示与查询。在使用聚合函数的时候,也可以为其取别名。
SELECT 字段名 AS 别名1,聚合函数 AS 别名2 FROM 表名;>>>AS可以使用空格进行代替。
使用正则表达式查询
正则表达式时用某种匹配模式去匹配一类字符串的一个方式。正则表达式的查询能力比通配字符(LIKE的匹配模式)的查询能力更加强大,而且更加灵活。
SELECT * FROM 表名 WHERE 字段名 REGEXP "匹配方式";>>>匹配方式如下:
| 模式字符 | 含义 |
|---|---|
| ^ | 匹配以特定字符或字符串开头的记录 |
| $ | 匹配以特定字符或字符串结尾的记录 |
| . | 匹配字符串的任意一个字符,包括回车和换行符 |
| [字符集合] | 匹配“字符集合”中的任意一个字符 |
| [^字符集合] | 匹配除“字符集合”以外的任意一个字符 |
| S1|S2|S3 | 匹配S1、S2、S3中的任意一个字符串 |
| * | 匹配多个该符号之前的字符,包括0个或1个 |
| + | 匹配多个该符号前的字符,包括1个 |
| ? | 匹配0个或一个该字符 |
| 字符串{N} | 匹配字符串出现N次 |
| 字符串{M,N} | 匹配字符串出现至少M次,最多N次 |
提示:正则中
*、+匹配默认为贪婪模式,如果使用非贪婪需要在后面加"?"
相关文章:
MySQL数据库从入门到精通学习第8天(表数据的查询)
表数据的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大,是最常用的查询语句。他具有一个固定的格式,如下: SELECT 查询的内容 FROM 数据…...
什么是IPAM?如何使用IPAM来管理IP地址和DHCP?
在计算机网络中,IPAM(IP Address Management)是一种用于管理IP地址和DHCP(Dynamic Host Configuration Protocol)的工具或系统。IPAM旨在简化和集中管理IP地址分配、子网划分和DHCP配置等任务。本文将详细介绍IPAM的概…...
PCIE学习
目录 一、PCIE结构1、层次结构2、数据包TLPDLLP PCIE寄存器配置1、基址寄存器的作用2、基址寄存器的位置 三、PCIE读取数据 一、PCIE结构 1、层次结构 绝大多数的总线或者接口,都是采用分层实现的。PCIe也不例外,它的层次结构如下: PCIe定…...
商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型
AGI时代的到来,市场风云变幻,世界正在经历着一场技术革命的颠覆性洗礼。 2023年6月6日6时,数说故事正式对外发布数说故事“SocialGPT”,国内首个专注Social领域的商业大模型。数说故事“SocialGPT”大家昵称它为“社牛”大模型&a…...
STM32HAL库RS485-ModBus协议控制伺服电机
STM32HAL库RS485-ModBus协议控制伺服电机 一个月前,接手了一个学长的毕设小车,小车采用rs485通信的modbus协议驱动轮毂电机,与往常我学习的pwm控制电机方法大相径庭,在这里以这篇博客记录下该学习过程。 小车主要架构 电机型号 …...
【医学图像】图像分割系列.3 (uncertainty)
介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022). Uncertainty-aware Self-ensembling Model for Semi-supervise…...
Java有线程安全的set吗?
在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…...
《HelloGitHub》第 86 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …...
LDGRB-01 3BSE013177R1 将数字输入和继电器输出结合
LDGRB-01 3BSE013177R1包的一部分是全面的通信选项,包括Modbus主/从或CS31,这种产品很少提供。128kB的用户内存和0.1秒/指令的程序处理时间只是AC500-eCo令人印象深刻的性能的两个例子。除了与现有AC500系列的互操作性,AC500-eCo系统还使用基…...
手动计算校正年龄、性别后的标准化死亡率 (SMR)
分析队列人群有无死亡人数超额,通常应用标准人群死亡率来校正,即刻观察到中的实际死亡数(D)与定一个标准的死亡人数(E),D与E之比称为死亡比(standarized Mortality ratio,…...
Java组合模式:构建多层次公司组织架构
在现实生活中,常常会遇到用树形结构组织的一些场景,比如国家省市,学校班级,文件目录,分级导航菜单,以及典型的公司组织架构,整个层次结构自顶向下呈现一颗倒置的树。这种树形结构在面向对象的世…...
Langchain-ChatGLM:基于本地知识库问答
文章目录 ChatGLM与Langchain简介ChatGLM-6B简介ChatGLM-6B是什么ChatGLM-6B具备的能力ChatGLM-6B具备的应用 Langchain简介Langchain是什么Langchain的核心模块Langchain的应用场景 ChatGLM与Langchain项目介绍知识库问答实现步骤ChatGLM与Langchain项目特点 项目主体结构项目…...
设计模式十 适配器模式
适配器模式 适配器模式是一种结构型设计模式。作用:当接口无法和类匹配到一起工作时,通过适配器将接口变换成可以和类匹配到一起的接口。(注:适配器模式主要解决接口兼容性问题) 适配器的优点与缺点: 优…...
1.6 初探JdbcTemplate操作
一、JdbcTemplate案例演示 1、创建数据库与表 (1)创建数据库 执行命令:CREATE DATABASE simonshop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 或者利用菜单方式创建数据库 - simonshop 打开数据库simonshop &#x…...
为什么要用线程池?
线程池是一种管理和复用线程资源的机制,它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池,以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源,避免了线程的频繁…...
c语言的预处理和编译
预处理 文件包含 当预处理器发现#include指令时,会查看后面的文件名并把文件的内容包含到当前文件中 两种写法 尖括号:引用的是编译器的库路径里面的头文件。 双引号:引用的是程序目录中相对路径中的头文件,如果找不到再去上面…...
网络安全必学 SQL 注入
1.1 .Sql 注入攻击原理 SQL 注入漏洞可以说是在企业运营中会遇到的最具破坏性的漏洞之一,它也是目前被利用得最多的漏洞。要学会如何防御 SQL 注入,首先我们要学习它的原理。 针对 SQL 注入的攻击行为可描述为通过在用户可控参数中注入 SQL 语法&#x…...
Docker基础知识详解
✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:文章 🥭本文内容&am…...
腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?
6月5日,香港交易所发布公告,将于6月19日在香港证券市场推出“港币-人民币双柜台模式”,当日确定有21只证券指定为双柜台证券。同时,港交所还表示,在双柜台模式推出前,更多证券或会被接纳并加入双…...
CentOS7 使用Docker 安装MySQL
CentOS7 使用Docker 安装MySQL Docker的相关知识本篇不会再概述,有疑惑的同学请自行查找相关知识。本篇只是介绍如何在CentOS7下使用Docker安装相应的镜像。 可登陆Docker官网 https://docs.docker.com 之后可以跟着官方的步骤进行安装。 clipboard.png 具体安装过…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
