数据表中的数据查询

文章目录

    • 一、概述
    • 二、简单查询
      • 1.列出表中所有字段
      • 2.“*”符号表示所有字段
      • 3.查询指定字段数据
      • 4.DISTINCT查询
    • 三、IN查询
    • 四、BETWEEN ADN查询
      • 1.符合范围的数据记录查询
      • 2.不符合范围的数据记录查询
    • 五、LIKE模糊查询
    • 六、对查询结果排序
    • 七、简单分组查询
      • 1.统计数量
      • 2.统计计算平均值
      • 3.统计计算求和
      • 4.统计最大值
      • 5.统计最小值
    • 八、联合查询
      • 1.内连接查询
      • 2.外连接查询
      • 3.合并查询数据记录
      • 4.子查询

一、概述

查询数据是指从数据库中获取所需要的数据,如Jack要达到验证用户名和密码的目的,就需要从数据库已保存的用户中读取当前用户的密码进行验证,以验明正身!保存查询数据时数据库常规操作中常用且重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式获取不同的数据。

二、简单查询

在MySQL中可以通过SQL语句来实现基本数据查询,SQL语句可以通过如下多种使用:查询所有字段数据、查询指定字段数据、避免重复数据查询、对结果进行排序和分组等查询。
数据库中可能包含数量庞大的表,表中可能包含无数的记录,如果没有两把刷子要获取所需的数据并非易事。在MySQL中,可以使用SELECT语句来查询数据,根据查询条件的不同,数据库系统会找到不同的数据,通过SELECT语句可以很方便的获取所需要的信息。在MySQL中,SELECT语句的基本语法形式如下:

SELECT field1, field2, ..., fieldn FROM tablename [WHERE CONDITION1] [GROUP BY fieldm [HAVING CONDITION2]] [ORDER BY fieldn [ASC | DESC]];

1.列出表中所有字段

通过SQL语句SELECT列出表的所有字段,具体语法形式如下:

SELECT field1, field2,...,fieldn FROM tablename;

其中,filed1~fieldn参数表示需要查询的字段名;tablename参数表示数据表的名称。
在这里插入图片描述

2.“*”符号表示所有字段

查询所有字段数据,除了使用上面的方式外,还可以通过符号"*"来实现,具体语法形式如下:

SELECT * FROM tablename;

其中, 符号"*"表示所有字段名;tablename参数表示数据表的名称,与上一种方式相比,“*”符号方式的优势比较明显,即可用该符号代替数据表中的所有字段,但是这种方式不够灵活,只能按照数据表中字段的固定顺序显示,不能随便改变字段的顺序。
在这里插入图片描述

3.查询指定字段数据

查询指定字段数据,只需修改关键字SELECT后的字段列表为指定字段即可。

SELECT field1,field2,...,fieldn FROM tablename;

在这里插入图片描述
如果关键字SELECT后面的字段不包含在所查询的表中,那么MySQL会报错。

4.DISTINCT查询

当在MySQL中执行简单数据查询时,有时会显示出重复数据,为了实现查询不重复数据,MySQL提供了DISTINCT功能,SQL语法如下:

SELECT DISTINCT field1,field2,...,fieldn FROM tablename;

在上述语句中,关键字DISTINCT去除重复的数据,下面将通过一个具体的示例来说明如何实现查询不重复数据。
在这里插入图片描述

三、IN查询

有的时候,当我们需要查询的目标记录限定在某个集合的时候,在MySQL中可以使用关键字IN来实现,关键字IN可以实现判断字段的数值是否在指定集合中,该关键字的具体语句形式如下:

SELECT field1,feld2,...,fieldn FROM tablename WHERE fieldm IN(value1,value2,value3,...,valuen);

参数fieldn表示名称为tablename的表中的字段名,参数valuen表示集合中的值,通过关键字IN来判断字段fieldm的值是否在集合(value1,value2, value3,…,valuen)中,如果字段fieldm的值在集合中,就满足查询条件,该记录会被查询出来,否在就不会被查询出来。
在这里插入图片描述
可以使用 NOT IN反向查询非集合中的数据

SELECT field1,feld2,...,fieldn FROM tablename WHERE fieldm NOT IN(value1,value2,value3,...,valuen);

在这里插入图片描述
集合查询:在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询,NULL存不存在的效果都一样;但是如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会查询到任何的结果。
在这里插入图片描述
在这里插入图片描述

四、BETWEEN ADN查询

当我们需要查询指定范围内的数据(如:id从0到100)的时候,MySQL提供了关键字BETWEEN AND,用来实现判断字段的数值是否在指定范围内的条件查询。该关键字的具体语法形式如下:

SELECT field1,field2,...,fieldn FROM tablename WHERE fieldm BETWEEN minvalue AND maxvalue;

在上述语句中,参数fieldn表示名称为tablename的表中的字段名,通过关键字BETWEEN和AND来设置字段field的取值范围,如果字段field的值在所指定的范围内,那么满足查询条件,该记录会被查询出来,否则不会被查询出来。BETWEEN minvalue AND maxvalue,表示的是一个范围间的判断过程,只针对数字类型。

1.符合范围的数据记录查询

通过关键字BETWEEN和AND设置查询范围:
在这里插入图片描述

2.不符合范围的数据记录查询

通过关键字NOT设置反向查询非查询范围的条件,具体SQL语句如下:

SELECT field1,field2,...,fieldn FROM tablename WHERE fieldm NOT BETWEEN minvalue AND maxvalue;

在这里插入图片描述
上面语句等同于:

SELECT field1,field2,...,fieldn FROM tablename WHERE fieldm < minvalue or fieldm > maxvalue;

在这里插入图片描述

五、LIKE模糊查询

当我们只想用字符串中间的一部分特征查找含有特征字符串的信息时,MySQL提供了关键字LIKE来实现模糊查询,需要使用通配符,具体语法形式如下:

SELECt field1,field2,...fieldn FROM tablename WHERE fieldm LIKE value;

在上述语句中,参数tablename表示表名,参数fieldn表示表中的字段名字,通过关键字LIKE来判断字段field的值是否与value字符串匹配,如果相匹配,则满足查询条件,该记录就会被查询出来;否则不会被查询出来。在MySQL中,字符串必须加上单引号(‘’)和双引号(“”)。由于关键字LIKE可以实现模糊查询,因为该关键字后面的字符串参数除了可以使用完整的字符串外,还可以包含通配符,LIKE关键字支持的通配符如下表所示:
在这里插入图片描述
在这里插入图片描述
使用NOT取反
在这里插入图片描述
使用LIKE关键字查询其他类型数据
在这里插入图片描述
使用LIKE关键字,如果匹配"%%",就是查询所有数据记录
在这里插入图片描述

六、对查询结果排序

在MySQL中,从表中查询的数据可能是无序的,或者排序顺序不是用户所期望的顺序,为了使查询结果的顺序满足客户的要求,可以使用关键字ORDER BY对记录进行排序,其语法形式如下:

SELECT field1,field2,field3,...,fieldn FROM tablename ORDER BY fieldm [ASC |DESC]

在上述语句中,参数tablename表示所要进行的排序的表名,参数fieldn表示表中的字段名字,参数fieldm表示按照该字段进行排序,ASC表示按升序进行排序;DESC表示按降序进行排序,默认的情况下按ASC进行排序。如果存在一条记录字段的值为空值(NULL),那么按升序排序时,含空值的记录将最先显示,可以理解为空值是该字段的最小值,按降序排列时,字段为空值的记录将最后显示。
在这里插入图片描述

七、简单分组查询

MySQL软件提供了5个统计函数来帮助用户统计数据,可以使用户很方便的对记录进行统计数、计算和、计算平均数、计算最大值和最小值,而不需要查询所有数据。在具体使用统计函数时,都是针对表中所有记录数或指定特定条件(WHERE字句)的数据记录进行统计计算。在现实应用中,经常会先把所有数据记录进行分组,再对这些分组后的数据记录进行统计计算。MySQL通过SQL语句GROUP BY来实现,分组数据查询语法如下:

SELECT function() [,field] FROM tablename WHERE CONDITION GROUP BY field;

在上述语句中,参数field表示某字段名,通过该字段对名称为tablename的表的数据记录进行分组。在具体进行分组查询时,分组所依赖的字段上的值一要要具有重复值,否则分组没有任何意义。
在这里插入图片描述

1.统计数量

  • COUNT(*):该方式可以实现对表中记录进行统计,不管表字段中包含的是NULL还是非NULL值。
  • COUNT(field):该方式可以实现对指定字段的记录进行统计,在具体统计时将忽略NULL值。

在这里插入图片描述

2.统计计算平均值

  • VG(field):该方式可以实现对指定字段的平均值进行计算,在具体统计时将忽略NULL值。

在这里插入图片描述

3.统计计算求和

  • SUM(field):该方式可以实现指定字段值之和,在具体统计时将忽略NULL值。

在这里插入图片描述

4.统计最大值

  • MAX(field):该方式可以实现计算指定字段值中的最大值,在具体统计时将忽略NULL值。
    在这里插入图片描述

5.统计最小值

  • MIN(field):该方式可以实现计算指定字段值中的最小值,在具体统计时将忽略NULL值。

在这里插入图片描述

八、联合查询

1.内连接查询

在实际开发中,我们会联合多个表来实现查询,比如把班级表和学生表联合起来就同时可以看到班级、老师和学员的信息。
班级表:
在这里插入图片描述
一个班级对应着多个学生,以下是与之对应的学生表:
在这里插入图片描述
将两个表中ID相同的记录关联起来组成一个新的列表,这就是联合查询:
在这里插入图片描述
这种只有两张表匹配的行才能显示的连接方式在MySQL中称之为内连接:INNER JOIN。在MySQL中内连接数据查询通过"INNER JOIN…ON"语句来实现,语法形式如下所示:

SELECT field1,field2,...,field2,...FROM tablename1 INNER JOIN tablename2 [INNER JOIN tablename] ON CONDITION;

班级表创建:
在这里插入图片描述
学生表创建:
在这里插入图片描述
联合表创建:
在这里插入图片描述
当表名特别长时,直接使用表名很不方便,或者在实现自连接操作时,直接使用表名无法区别表,为了解决这一类问题,MySQL提供了一种机制来为表取别名,具体语法如下:

SELECT field1,field2,...fieldn [AS] otherfieldn FROM tablename1 [AS] othertablename1,...,Tablename [AS] othertablenamen...where othertablename1.fieldx = othertablename.fieldx...;

在这里插入图片描述
自连接
内连接查询中存在一种特殊的等值连接,就是所谓的自连接,即指表与自身进行连接
如:查询学生”小花“所在班级的其他学生,SQL语句如下:
在这里插入图片描述
等值连接
内连接查询中的等值连接就是在关键字ON后面的匹配条件通过等于运算符(=)来实现等值条件
在这里插入图片描述
不等值连接
内连接查询中的不等值 连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,还可以使用关系运算符,包含”>“、”>=“、”<“、”<=“和”!=“等运算符号。
在这里插入图片描述

2.外连接查询

当我们在查询数据时,要求返回操作表中至少一个表的所有数据记录,通过SQL语句"OUTER JOIN…ON"来实现,外连接数据查询语法形式如下:

SELECT field1,field2,...fieldn FROM tablename1 LEFT|RIGHT [OUTER] JOIN tablename2 ON CONDITION;

在上述语句中,参数fieldn表示所要查询的字段名称,来源于所连接的表tablename1和tablename2,关键字OUTER JOIN表示数据表进行外连接,参数CONDITION表示进行匹配的条件。

左连接
外连接查询中的左外连接,就是指新关系中执行匹配条件时,以关键字LEFT JOIN左边的表为参考表。左连接的结果包括LEFT OUTER字句中指定的左表的所有行,而不仅仅是连接列所匹配的行,如果左表的某行在右表中没有匹配行,则在相关的结果中,右表的所有列表均为空值。
例如:查询所有学生的学号、姓名、班级编号、性别、班级名、班主任信息,具体SQL语句如下:
在这里插入图片描述
右连接
外连接查询中的右外连接在新关系中执行匹配条件时,以关键字RIGHT JOIN右边的表为参考表,如果右表的某行在左表中没有匹配行,左表将返回空值。
例如:查询所有班级的所有学生信息,具体SQL语句如下:
在这里插入图片描述

3.合并查询数据记录

在MySQL中通过关键字UNION来实现并操作,即可以通过将其多个SELECT语句的查询结果合并在一起,组成新的关系。在MySQL软件中,合并查询数据记录可通过SQL语句UNION来实现,具体语法形式如下:

SELECT field1,field2,...,fieldn FROM tablename1 UNION | UNION ALL SELECT field1,field2,...,fieldn FROM tablename2 UNION | UNION ALL SELECT field1,field2,...,fieldn;

注意:多个选择语句select的列数相同就可以合并,union和union all的主要区别是union all是把结果集直接合并在一起,而union是将union all后的结构再执行一次distinct,去除重复的记录后的结果。
在这里插入图片描述

4.子查询

所谓子查询,是指在一个查询中嵌套了其他的若干查询,即在一个SELECT查询语句的WHERE或FROM子句中包含另一个SELECT查询语句。在查询语句中,外层SELECT查询语句成为主查询,WHERE子句中的SELECT查询语句被成为子查询,也被成为嵌套查询。通过子查询可以实现多表查询,该查询语句中可能包含IN、ANY、ALL和EXISTE等关键字,除此之外还可能包含比较运算符。理论上子查询可以出现在查询语句的任意位置,但是在实际开发中子查询经常出现在WHERE和FROM子句中。

带比较运算符的子查询
子查询可以使用比较运算符。这些比较运算符包括=,!=、>、>=、<、<=和<>等,其中,<>与!=是等价的。比较运算符在子查询中使用得非常广泛,如查询分数、年龄、价格和收入等。
例如:查询student表中“小花”所在班级班主任的名字,SQL语句如下:
在这里插入图片描述
注意:使用比较运算符时,select子句获得的记录数不能大于1条。
在这里插入图片描述
带关键字IN的子查询
一个查询语句的条件可能落在另一个SELECT语句结果中,这时可以使用IN关键字,SQL示例如下:
NOT IN的用法与IN相同
例如:查询student表中“小花“所在班级班主任的名字。SQL语句如下:
在这里插入图片描述
带关键字EXISTS的子查询
关键字EXISTS表示存在,后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行;如果至少返回一行,那么EXISTS的结果为true,此时外层语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询。
例如:如果102班存在学生记录,就查询102班的班级信息的记录。SQL示例语句如下:
在这里插入图片描述

带关键字ALL的子查询
关键字ALL表示满足所有条件。使用关键字ALL时,只有满足内层查询语句返回的所有结果才可以执行外层查询语句。例如需要查询哪些同学能获得一等奖学金,首先要从奖学金表中查询出各种奖学金要求的最低分。因为一等奖学金需要的分数最高,只有当成绩高于所有奖学金最低分时,这个同学才有可能获得一等奖学金,关键字ALL也经常与比较运算符一起使用。例如,“>ALL”表示大于所有值,“<ALL”表示小于所有值。
例如:查询数据库school的表student中哪些学生可以获得一等奖学金,即学生的总成绩要达到一等奖学金规定的分数,而一等奖学金是最高奖学金。
在这里插入图片描述
带关键字ANY的子查询
关键字ANY表示满足其中任一条件。使用关键字ANY时,只要满足内层查询语句返回的结果中的任何一个就可以通过该条件来执行外层查询语句。例如,需要查询哪些学生可以获取奖学金,那么首先要有一张奖学金表,从表中查询出各种奖学金要求的最低分,只要一个同学的成绩大于不同奖学金最低分的任何一个,这个同学就可以获得奖学金。关键字ANY通常和比较运算符一起使用。例如,“>ANY”表示大于任何一个值,“=ANY”表示等于任何一个值。
例如:查询数据库school的表student中的哪些学生可以获得奖学金。学生的成绩达到其中任何一项奖学金固定的分数即可。
在这里插入图片描述

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

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

相关文章

第11章:Python TDD实现货币类加法运算初步

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

前端Vue2项目使用md编辑器

项目中有一个需求&#xff0c;要在前端给用户展示内容&#xff0c;内容有 AI 生成的&#xff0c;返回来的是 md 格式&#xff0c;所以需要给用户展示 md 格式&#xff0c;并且管理端也可以编辑这个 md 格式的文档。 使用组件库 v-md-editor。 https://code-farmer-i.github.i…

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近&#xff0c;Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…

【计算机视觉】人脸识别

一、简介 人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比&#xff0c;判断输入人脸是否与数据库中的某一张人脸匹配&#xff0c;即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。 人脸识别属于1&#xff1a;N的比对&#xff0c;输入人脸身份是1&…

光谱相机在智能冰箱的应用原理与优势

食品新鲜度检测 详细可点击查看汇能感知团队实验报告&#xff1a;高光谱成像技术检测食物新鲜度 检测原理&#xff1a;不同新鲜程度的食品&#xff0c;其化学成分和结构会有所不同&#xff0c;在光谱下的反射、吸收等特性也存在差异。例如新鲜肉类和蔬菜中的水分、蛋白质、叶…

Dangerzone:免费的危险的文件转换安全程序

我们知道很多杀毒软件会将很多文件视作恶意程序&#xff0c;尤其是带宏病毒的DOC文件&#xff0c;直接删除难免会带来不必要的麻烦&#xff0c;那么推荐一款免费的危险的文件转换安全程序&#xff1a;Dangerzone 。它可以检查各种可能有危险的文件并将其转换为安全版本&#xf…

销售线索管理的价值以及主要方法

销售线索管理的价值体现在&#xff1a;提高销售效率、优化客户体验、提升转化率、支持数据驱动决策。其中&#xff0c;提高销售效率尤为关键。通过系统化的线索管理&#xff0c;销售团队能够更快地识别和跟进潜在客户&#xff0c;从而缩短销售周期。自动化的线索评分和分配减少…

手写SOCKET进行HTTP通信

网络基础 我们电脑主板上都内置了多种网卡&#xff0c;一般主要有以下几类&#xff1a; 虚拟网卡&#xff08;loopback&#xff09; 注意&#xff0c;它是虚拟的&#xff0c;并不是物理网卡&#xff0c;也被称为是本地环回地址(或接口)&#xff0c;一般将127.0.0.1作为本地环回…

在 C++ 中实现调试日志输出

在 C 编程中&#xff0c;调试日志对于定位问题和优化代码至关重要。有效的调试日志不仅能帮助我们快速定位错误&#xff0c;还能提供有关程序运行状态的有价值的信息。本文将介绍几种常用的调试日志输出方法&#xff0c;并教你如何在日志中添加时间戳。 1. 使用 #ifdef _DEBUG…

MFC程序设计(二)基于对话框编程

从现在开始&#xff0c;我们将以基于对话框的MFC应用程序来讲解MFC应用 向导生成基于对话框MFC应用程序 对话框是一种特殊类型的窗口&#xff0c;绝大多数Windows程序都通过对话框与用户进行交互。在Visual C中&#xff0c;对话框既可以单独组成一个简单的应用程序&#xff0…

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

目录 设计思路 1.为什么不直接用FlinkCDC要重写Flink Gauss CDC 2.存量同步的逻辑是什么 2.1、单主键的切片策略是什么 2.2、​​​​​复合主键作切片&#xff0c;怎么保证扫描到所有的数据 3、增量同步的逻辑是什么 4、存量同步结束之后如何无缝衔接增量同步 5、下游…

idea新增java快捷键代码片段

最近在写一些算法题&#xff0c;有很多的List<List这种编写&#xff0c;想着能否自定义一下快捷键 直接在写代码输入&#xff1a;lli&#xff0c;即可看见提示

修改docker共享内存shm-size

法1&#xff1a;在创建容器时增加共享内存大小 nvidia-docker run -it -p 10000:22 --name"zm" -v /home/zm:/data ufoym/deepo:all-cu101 /bin/bash --shm-size20G法2&#xff1a;修改正在运行的容器的共享内存设置 查看容器、共享内存 docker ps -a df -lh | gr…

深度学习-91-大语言模型LLM之基于langchain的模型IO的提示模板

文章目录 1 Model的输入输出2 提示模板2.1 提示模板的特点2.2 提示模板的类型3 使用提示模板3.1 设置环境变量3.2 PromptTemplate提示模板3.2.1 通过from_template方法3.2.2 直接生成提示模板3.2.3 使用提示模板3.2.4 复用提示模板3.3 ChatPromptTemplate聊天提示模板3.3.1 通过…

stm8s单片机(二)外部中断实验

中断优先级 stm8的中断优先级不是固定不变的&#xff0c;stm8的中断分为硬件优先级与软件优先级&#xff1b;当多个中断发生时&#xff0c;cpu会先响应软件优先级高的中断&#xff0c;若软件优先级相同会先响应硬件优先级高的&#xff1b; 其中软件优先级有四个 /*** brief …

【ubuntu 连接显示器无法显示】可以通过 ssh 连接 ubuntu 服务器正常使用,但服务器连接显示器没有输出

背景 ubuntu 服务器通过显示器进行关机&#xff0c;断开电源重新接上电源再重启时&#xff0c;服务器连接显示器不再有输出。CPU 为 AMD Ryzen 7 5800X 8-Core Processor&#xff0c;并没有显示&#xff0c;只能通过 NVDIA GPU 来显示。但是通过 nvidia-smi, nvitop 的输出, 以…

FineReport案列分析(一)

父格sql的解析 SELECT XCPX,XCPDL ,XCPZL FROM (SELECT DISTINCT XCPX,XCPDL,XCPZL FROM XPCXP_YS WHERE BM IN(经销商业务部,兴客坊) UNION(SELECTDISTINCT A.CPX AS XCPX,A.CPDL AS XCPDL,A.CPZL AS XCPZLFROM SYS.ORDER_SALEZJK BJOIN KHFL_LS L1ON L1.KSBMB.CUSTCODELEFT…

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频&#xff1f;LLMComfyUI混元视频 实现流程图&#xff08;重点&#xff09;1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…

Vue3 30天精进之旅:Day01 - 初识Vue.js的奇妙世界

引言 在前端开发领域&#xff0c;Vue.js是一款极具人气的JavaScript框架。它以其简单易用、灵活高效的特性&#xff0c;吸引了大量开发者。本文是“Vue 3之30天系列学习”的第一篇博客&#xff0c;旨在帮助大家快速了解Vue.js的基本概念和核心特性&#xff0c;为后续的深入学习…

helm推送到harbor私有库--http: server gave HTTP response to HTTPS client

harbor私有库访问的是http模式 harbor 2.8版本以上可以存储helm镜像 docker镜像推送的时候需要docker端配置insecure-registries 发现helm推送只能在harbor部署的本机使用localhost才能推送成功&#xff0c;即 helm push xxx.tgz oci://localhost:80/library 使用helm pus…