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中的关键催化…

如何配置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;从电路维修到暖通检测再到汽车故障排查等各个领域都有着重要的作用。 红外热成像仪的解决方…

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…

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

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

数据防泄密方案公司(dlp数据防泄密厂商排名)

在当今数字化时代&#xff0c;数据已经成为了企业最重要的资产之一。然而&#xff0c;随着企业信息化的不断深入&#xff0c;数据泄露的风险也越来越大。为了保护企业的核心数据&#xff0c;越来越多的企业开始重视数据防泄密工作&#xff0c;并寻求专业的数据防泄密方案提供商…

LeetCode——415. 字符串相加

C开头 &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#…

【计网·湖科大·思科】实验五 IPV4地址-分类地址和构建超网

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

CUDA编程的框架-以向量相加为例

CPU适合控制GPU程序的逻辑结构。 注意在编程时要区分CPU的程序和GPU的程序&#xff0c;CPU的内存和GPU的内存。 host- CPU device- GPU CPU的内存和GPU的内存之间是相互独立的&#xff0c;因此需要进行通信。 __global__ //核函数的声明符号<<<grid,block>>>…

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来&#xff0c;来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数&#xff0c;把网卡名作为参数&#xff0c;函数返回网卡的IP 在获取某个网卡IP时&#xff0c;考虑网…

【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 交换排序 快速排序 hoare版代…

Windows Server 2025 LTSC 预览版来了

Windows Server 2025 LTSC 预览版来了 1. 安装 Windows Server 2025 LTSC 预览版2. 安装 VMware Tools3. Windows Server 2025 LTSC 预览版4. Windows Server 2025 LTSC 预览版下载地址 1. 安装 Windows Server 2025 LTSC 预览版 使用 VMware Workstation 安装&#xff0c; 安…

推特账号被冻结怎么办?检查IP是否正常

Twitter 拥有庞大的用户群和日常内容流&#xff0c;是沟通、网络和营销的重要平台。然而&#xff0c;处理其限制和潜在的帐户问题可能很棘手。有许多跨境社媒小伙伴反馈&#xff0c;账号无故被冻结&#xff0c;导致内容与客户尽失&#xff01;其实除了账户养号、被举报、广告信…