Mysql查询数据

1 基本查询语句

MySQL从数据表中查询数据的基本语句为SELECT语句。SELECT语句的基本格式是:

 

 2 单表查询

2.1 查询所有字段

  SELECT * FROM 表名;

 2.2 在SELECT语句中指定所有字段

  SELECT f_id, s_id ,f_name, f_price FROM fruits;

 2.3 查询单个字段

  SELECT 列名FROM 表名;

 2.4 查询多个字段

  SELECT 字段名1,字段名2,…,字段名n FROM 表名;

 2.5 查询指定记录

  SELECT 字段名1,字段名2,…,字段名nFROM 表名WHERE 查询条件

 

2.6 带IN关键字的查询

IN操作符用来查询满足指定范围内的条件的记录,使用IN操作符,将所有检索条件用括号括起来,检索条件之间用逗号分隔开,只要满足条件范围内的一个值即为匹配项。

  SELECT s_id,f_name, f_price FROM fruits   WHERE s_id IN (101,102);SELECT s_id,f_name, f_price FROM fruits   WHERE s_id NOT IN (101,102);

2.7 带BETWEEN AND的范围查询

  SELECT f_name, f_price FROM fruits WHERE f_price BETWEEN 2.00 AND 10.20;

2.8 带LIKE的字符匹配查询

百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符;下划线通配符‘_’,一次只能匹配任意一个字符。

2.9 查询空值

在SELECT语句中使用IS NULL子句,可以查询某字段内容为空记录。

2.10 带AND的多条件查询

  SELECT f_id, f_price, f_name FROM fruits WHERE s_id = '101' AND f_price >=5;

2.11 带OR的多条件查询

  SELECT s_id,f_name, f_price FROM fruits WHERE s_id = 101 OR s_id = 102;

 2.12 查询结果不重复

  SELECT DISTINCT 字段名 FROM 表名;

2.13 对查询结果排序-单列排序

select 字段名 From 表名  order by 字段名;

2.13 对查询结果排序-多列排序

在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

select 字段名 From 表名  order by 字段名,字段名;

 2.13 对查询结果排序-指定排序方向

默认情况下,查询数据按字母升序进行排序(A~Z),但数据的排序并不仅限于此,还可以使用ORDER BY对查询结果进行降序排序(Z~A)。

  SELECT f_name, f_price FROM fruits ORDER BY f_price DESC;//降序SELECT f_name, f_price FROM fruits ORDER BY f_price ASC;//升序SELECT f_name, f_price FROM fruits ORDER BY f_price DESC,f_price1;//降序//DESC排序方式只应用到直接位于其前面的字段上

 2.14 分组查询

MySQL中使用GROUP BY关键字对数据进行分组,基本语法形式为:

  [GROUP BY 字段] [HAVING <条件表达式>]

字段值为进行分组时所依据的列名称;“HAVING <条件表达式>”指定满足表达式限定条件的结果将被显示。

2.15 创建分组

GROUP BY关键字通常和集合函数一起使用,比如MAX()、MIN()、COUNT()、SUM()、AVG()。

在MySQL中,可以在GROUP BY子句中使用GROUP_CONCAT()函数,将每个分组中各个字段的值显示出来。

SELECT s_id, GROUP_CONCAT(f_name) AS Names FROM fruits GROUP BY s_id;

 

2.16  使用HAVING过滤分组

GROUP BY可以和HAVING一起限定显示记录所需满足的条件,只有满足条件的分组才会被显示。

  SELECT s_id, GROUP_CONCAT(f_name) AS NamesFROM fruitsGROUP BY s_id HAVING COUNT(f_name) > 1;

 

HAVING关键字与WHERE关键字都是用来过滤数据的,两者有什么区别呢?其中重要的一点是,HAVING在数据分组之后进行过滤来选择分组,而WHERE在分组之前来选择记录。另外,WHERE排除的记录不再包括在分组中。

2.17  在GROUP BY子句中使用WITH ROLLUP

使用WITH ROLLUP关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。

 2.18 多字段分组

使用GROUP BY可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段,MySQL根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中再根据第2个字段的值进行分组,以此类推。

  mysql> SELECT * FROM fruits group by s_id,f_name;

   两个字段是一个组合,是一个分组结果,第一个字段分组完成后,再分组第二个字段,查询出的顺序会发生变化。

2.19 GROUP BY和ORDER BY一起使用

2.20 使用LIMIT限制查询结果的数量

SELECT返回所有匹配的行,有可能是表中所有的行,若仅仅需要返回第一行或者前几行,可使用LIMIT关键字,基本语法格式如下:

  LIMIT [位置偏移量,] 行数

第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。

MySQL 8.0中可以使用“LIMIT 4 OFFSET 3”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT 4,3;”返回的结果相同。

3.使用集合函数查询

 ● COUNT(*)计算表中总的行数,不管某列是否有数值或者为空值。

● COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。

● SUM()函数在计算时,忽略列值为NULL的行。

● MAX()函数除了用来找出最大的列值或日期值之外,还可以返回任意列中的最大值,包括返回字符类型的最大值。MIN()函数与MAX()函数类似,不仅适用于查找数值类型,也可应用于字符类型。

3.连接查询

连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算符可以实现多个表查询。

3.1 内连接查询

内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录,也就是说,在内连接查询中,只有满足条件的记录才能出现在结果关系中。

3.2 外连接查询

外连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中仅是符合查询条件和连接条件的行。有时候需要包含没有关联的行中数据,即返回查询结果集合中不仅包含符合连接条件的行,还包括左表(左外连接或左连接)、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。外连接分为左外连接或左连接和右外连接或右连接:

● LEFT JOIN(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

● RIGHT JOIN(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

左连接的结果包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果行中,右表的所有选择列表列均为空值。

右连接是左连接的反向连接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,左表将返回空值。

3.3 复合条件连接查询

复合条件连接查询是在连接查询的过程中,通过添加过滤条件限制查询的结果,使查询的结果更加准确。

4 子查询

子查询指一个查询语句嵌套在另一个查询语句内部的查询,子查询中常用的操作符有ANY(SOME)、ALL、IN、EXISTS。子查询可以添加到SELECT、UPDATE和DELETE语句中,而且可以进行多层嵌套。子查询中也可以使用比较运算符,如“<”“<=”“>”“>=”和“!=”等。

4.1 ANY(SOME)

ANY和SOME关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。

4.2 带ALL关键字的子查询

ALL关键字与ANY和SOME不同,使用ALL时需要同时满足所有内层查询的条件。例如,修改前面的例子,用ALL关键字替换ANY

 4.3 带EXISTS关键字的子查询

EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询。

EXISTS关键字可以和条件表达式一起使用。

 

 EXISTS和NOT EXISTS的结果只取决于是否会返回行,而不取决于这些行的内容,所以这个子查询输入列表通常是无关紧要的。

4.4 带IN关键字的子查询

IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。SELECT语句中可以使用NOT IN关键字,其作用与IN正好相反。

 

 

4.5 带比较运算符的子查询 

 子查询时还可以使用其他的比较运算符,如“<”“<=”“=”“>=”和“!=”等。

5  合并查询结果

 利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。UNION不使用关键字ALL,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字ALL的作用是不删除重复行也不对结果进行自动排序。基本语法格式如下:

  SELECT column,... FROM table1UNION [ALL]SELECT column,... FROM table2

  先显示完第一个查询再显示第二个查询

 6 为表和字段取别名

6.1 为表取别名

当表名字很长或者执行一些特殊查询时,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名替代表原来的名称。为表取别名的基本语法格式为:

  表名 [AS] 表别名

 在为表取别名时,要保证不能与数据库中其他表的名称冲突。

 6.2 为字段取别名

在有些情况下,显示的列的名称会很长或者名称不够直观,MySQL可以指定列别名,替换字段或表达式。为字段取别名的基本语法格式为:

  列名 [AS] 列别名

 

 7 使用正则表达式查询

MySQL中使用REGEXP关键字指定正则表达式的字符匹配模式。

 字符‘^’匹配以特定字符或者字符串开头的文本。

 

8  MySQL 8.0的新特性1 GROUP BY不再隐式排序

MySQL对GROUP BY字段不再隐式排序。如果确实需要排序,必须加上ORDER BY子句。

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

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

相关文章

nginx部署前端(vue)项目及配置修改

目录 一、前端应用打包 二、部署前端应用 1、上传前端文件夹 2、修改nginx配置文件 3、重启nginx 三、查看效果 nginx安装参考&#xff1a;linux安装nginx-CSDN博客 一、前端应用打包 打包命令 npm run build 打包成功如下&#xff0c;会在项目路径下生成dist文件夹 二…

Windows Server 2003 Web服务器搭建

系列文章目录 目录 系列文章目录 前言 一、Web服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装Web服务器 4)查看安装是否成功 5)打开Internet信息服务(IIS)管理器,进行配置 6)找…

【开源之美】:cppcheck

一、项目链接 https://github.com/danmar/cppcheck/tree/main 二、效果示例

图像复原的天花板在哪里?SUPIR:开创性结合文本引导先验和模型规模扩大

SUPIR&#xff08;Scaling-UP Image Restoration&#xff09;&#xff0c;这是一种开创性的图像复原方法&#xff0c;利用生成先验和模型扩大规模的力量。通过利用多模态技术和先进的生成先验&#xff0c;SUPIR在智能和逼真的图像复原方面取得了重大进展。作为SUPIR中的关键催化…

OpenHarmony(鸿蒙应用开发 - 实战篇 一):探索ArkTS开发条件语句。

前言 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c;目标是面向全场景、全连接、全智能时代&#xff0c;基于开源的方式&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互联产业…

【C语言】(10)循环结构

1. for 循环 a. 介绍 for 循环在 C 语言中用于在已知循环次数的情况下重复执行代码。 b. 基本语法 for (初始化表达式; 条件表达式; 更新表达式) {// 循环体 }c. 示例 for (int i 0; i < 10; i) {printf("%d ", i); }d. 详细解释 初始化表达式&#xff1a;…

SFTP连接、创建多级目录、传文件

SFTP连接、创建多级目录、传文件 SFTP连接创建目录&#xff08;逐级&#xff09;传输文件SFTP常用命令 通过FTP或SFTP传输指定格式的数据文件也是常见的需求&#xff0c;本文简单介绍一下常用的SFTP方法&#xff0c;另外需要注意的是&#xff0c;文中涉及的代码全都是在SpringB…

Simplex and Duplex connector(单工和双工连接器)

Simplex and Duplex connector 正文 正文 在阅读一些英文资料的时候&#xff0c;遇到了一个说明方式&#xff0c;叫做 Simplex 和 Duplex Connector。中文翻译过来就是单工和双工连接器。单工连接器的含义是&#xff0c;比如对于一个光纤&#xff0c;它的末端有一个连接器的就…

如何配置MacLinuxWindows环境变量

这里写目录标题 什么是环境变量什么是PATH为什么要配置环境变量 如何配置环境变量环境变量有哪些环境变量加载顺序环境变量加载详解 配置参考方法一&#xff1a; export PATHLinux环境变量配置方法二&#xff1a;vim ~/.bashrcLinux环境变量配置方法三&#xff1a;vim ~/.bash_…

go语言基础之泛型

1.泛型 泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型。 1.1 为什么需要泛型 func reverse(s []int) []int {l : len(s)r : make([]int, l)for i, e : range s {r[l-i-1] e}return r }fmt.Println(reverse…

红外热成像仪定制_热成像仪/红外夜视仪开发方案

红外热成像技术是一种利用红外热成像仪将物体发出的不可见红外辐射能量转换成可见的温度场图像的技术&#xff0c;通过不同颜色来表示不同温度。这项技术的应用领域非常广泛&#xff0c;从电路维修到暖通检测再到汽车故障排查等各个领域都有着重要的作用。 红外热成像仪的解决方…

虾皮API助力电商行业高效商品管理

一、引言 随着电商行业的飞速发展&#xff0c;商品管理成为了电商企业面临的重要挑战之一。传统的商品管理模式往往效率低下&#xff0c;难以满足现代电商市场的快速变化和个性化需求。为了解决这一问题&#xff0c;虾皮API应运而生&#xff0c;为电商行业带来了高效商品管理的…

【C++】构造函数

前言 在C语言中&#xff0c;当我们定义了一个结构体时&#xff0c;通常需要编写一个函数来初始化它&#xff0c;否则在创建结构体变量时容易忘记调用初始化函数&#xff0c;导致程序出错。但在C中&#xff0c;我们将不会有这样的烦恼&#xff0c;前提是编写了正确的构造函数。…

整数流理论

目录 一&#xff0c;k流 二&#xff0c;整数流 三&#xff0c;四色问题 一&#xff0c;k流 Tutte在研究四色问题时&#xff0c;开创了整数流理论。 他研究的具体问题是&#xff0c;给定一个有向图和一个k阶交换群&#xff0c;能不能找到一个函数&#xff0c;把图的每个边映…

SpringBoot项目实现热部署的配置方法

SpringBoot项目实现热部署的配置方法 1、什么是热部署&#xff1f; 热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。 2、什么是SpringBoot热部署&#xff1f; SpringBoot热部署就是在项目正在运行的时候修改代码, 却不需要重新启动…

PCB的通孔,盲孔,埋孔

通孔&#xff1a;双层板从顶层到底层的打通&#xff0c;这样电流就能够从顶层到底层 盲孔&#xff1a;因为看不到底&#xff0c;像一口井一样&#xff0c;只能打到中间&#xff0c;里面灌上铜&#xff0c;我们可以从第一层切换到第二层&#xff0c;第三层等等&#xff0c;盲孔…

在Windows上安装与配置Apache服务并结合内网穿透工具实现公网远程访问本地内网服务

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

[React源码解析] Fiber

在React15及以前, Reconciler采用递归的方式创建虚拟Dom, 但是递归过程不可以中断, 如果组件的层级比较深的话, 递归会占用线程很多时间, 那么会造成卡顿。 为了解决这个问题, React16将递归的无法中断的更新重构为异步的可中断更新, Fiber架构诞生。 文章目录 1.Fiber的结构2…

【mysql把一个字段分割成两个字段】

需求: 用sql语句把一个字段分割成两个字段 idnameold_string1张三张三房间1 类似这样 要把old_string分割成id和name UPDATE table_name setname substr(old_string,1,2),id substr(old_string,locate(房间,old_string)1,1);locate(房间,old_string)//房间这个指定字符串…

【blender烘焙】法线烘焙出现大面积结构丢失怎么办?blender烘焙vs八猴烘焙

用dcc烘焙法线是很常用的减面优化手段&#xff0c;很多建模的dcc自己也内置的烘焙的功能&#xff0c;像我自己在工作流中也偶尔用blender的烘焙做一下材质的整合优化&#xff0c;在质量要求不高的时候还算凑合可用。 问题描述 在前期的文章中飞燕2号建模&#xff0c;我就遇到…