mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据

MySQL8.0 初级学习笔记(六)查询数据

MySQL8.0 初级学习笔记(六)查询数据

查询有多种方法:单表查询,使用集合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名,使用正则表达式查询

一、单表查询

查询所有字段:SELECT * FROM 表名;

查询指定字段:(单个字段):SELECT 列名 FROM 表名;

查询指定字段(多个字段):SELECT 字段名1,字段名2,...,字段名n FROM 表名;

查询指定记录:SELECT 字段名1,字段名2,...,字段名n FROM表名 WHERE 查询条件;

WHERE表达式中运算符的说明如下:

HAVING关键字和WHERE关键字都是用来过滤数据的,区别在于HAVING是在数据分组之后进行过滤分组,而WHERE在分组之前来选择记录,另外WHERE排除的记录不再包括在分组中。

3.在GROUP BY 子句中使用WITH ROLLUP:可以在所有查询出的分组记录之后增加一条记录,该记录计算查询出所有记录的总和,即统计记录数量。

SELECT 字段名,COUNT(*) AS 新字段名(如total) FROM 表名 GROUP BY 字段名 WITH ROLLUP;

4.多字段分组:SELECT * FROM 表名 GROUP BY 字段名1,字段名n;

5.GROUP BY 和ORDER BY 一起使用:ORDER BY用来对查询的记录排序,和GROUP BY一起使用,可以完成对分组的排序。

SELECT 字段名1,集合函数() as 新字段名1 FROM 表名 GROUP BY 字段名1 HAVING 集合函数()条件(例如>1) ORDER BY 新字段名1;

运作逻辑:Group by对数据进行分组,集合函数对数据进行各种条件的数据返回,HAVING子句对分组数据进行过滤,最后ORDER BY 子句排序输出。

6.使用LIMIT限制查询结果的数量:LIMIT[位置偏移量,] 行数

如显示表名查询结果的前6行:SELECT * FROM 表名 LIMIT 6;

注意:MYSQL8.0中 可以使用"LIMIT 5 OFFSET 4",意思是获取从第6调记录开始后面的4条记录,和"LIMIT 5,4" 返回结果相同,其他数据同理推论

二,使用集合函数查询

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

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

SELECT COUNT(*) AS 字段名 FROM 表名;

注意:count(*)与count(字段名)两种方式在计算总数的时候对待null 值得方式不同:指定列的值为空的行被count()函数忽略;如果不指定列,而在count()函数中使用星号“*”,则所有记录都不忽略。

SUM()是一个求总和的函数,也可以和GROUP by一起使用,来计算每个分组的总和。

sum()函数在计算时,忽略列值为null的行。

AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

可以和GROUP BY 一起使用,来计算每个分组的平均值。

SELECT 字段名,AVG(字段名) AS 新字段名 FROM 表名 GROUP BY 字段名;

MAX()函数返回指定列中的最大值

可以和GROUP BY一起使用,求每个分组中的最大值。

SELECT 字段名,MAX(字段名) AS 新字段名 FROM 表名 GROUP BY 字段名;

MAX()函数不仅适用于查找数据类型,也可以应用于字符类型。

MAX()函数除了用来找到最大的列值或日期值之外,还可以返回任意列中的最大值,包括返回字符类型的最大值。在对字符类型数据进行比较时,按照字符的ASCII码值大小进行比较,从a~z,a的ASCII码最小,z的最大。在比较时,先比较第一个字母,如果相等,继续比较下一个字符,一直到两个字符不相等或者字符结束为止。例如'b'与't'比较时,‘t’为最大值;‘bcd’与'bca‘比较时,'bcd'为最大值。

MIN()函数返回查询列中的最小值

可以和GROUP BY一起使用,求每个分组中的最小值。

SELECT 字段名,MIN(字段名) AS 新字段名 FROM 表名 GROUP BY 字段名;

MAX()函数不仅适用于查找数据类型,也可以应用于字符类型。

三、连接查询

1.内连接查询

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

SELECT 表名1.相同字段名,字段名1,字段名n FROM 表名2,表名1 WHERE 表名2.相同字段名 =表名1.相同字段名

SELECT 表名1.相同字段名,字段名1,字段名n FROM 表名2 INNER JOIN 表名1 ON 表名2.相同字段名=表名1.相同字段名;

在这种查询语句中,两个表之间的关系是通过INNER JOIN指定。使用这种语法的时候,连接的条件使用ON子句而不是WHERE,ON 和 WHERE后面指定的条件相同。使用WHERE子句定义连接条件比较简单明了,而INNER JOIN语法是ANSI SQL的标准规范,使用INNER JOIN连接语法能够确保不会忘记连接条件,而且WHERE子句在某些时候会影响查询的性能。

2.外连接查询

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

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

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

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

SELECT 表名1.字段名,表名2.字段名 FROM 表名1 LEFT OUTER JOIN 表名2 ON 表名1.相同字段名=表名2.相同字段名;

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

SELECT 表名1.字段名,表名2.字段名 FROM 表名1 RIGHT OUTER JOIN 表名2 ON 表名1.相同字段名=表名2.相同字段名;

3.复合条件连接查询

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

四、子查询

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

SELECT 字段名1 FROM 表名1 WHERE 字段名 (比较符)ANY(SELECT 字段名 FROM 表名2);

带ALL关键字的子查询:和ANY与SOME不同,使用ALL时需要同时满足所有内层查询的条件,例如,修改前面的例子,用ALL关键字替换ANY。ALL关键字接在一个比较操作符的后面,表示与子查询返回的所有值比较为TRUE,则返回TRUE。

SELECT 字段名1 FROM 表名1 WHERE 字段名 (比较符)ALL(SELECT 字段名 FROM 表名2);

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

SELECT * FROM 表名1 WHERE EXISTS (SELECT 字段名 FROM 表名2 WHERE 字段名 = X);

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

带IN关键字的子查询:IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。例如:

SELECT 字段名1 FROM 表名1 WHERE 字段名2 IN (SELECT 字段名2 FROM 表名2 WHERE 字段名3条件);

带比较运算符的子查询:带ANY、ALL关键字的子查询时使用了“>"比较运算符,子查询时还可以使用其他的比较运算符,如”="和“!=”等。

五、合并查询结果

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

SELECT字段名1,字段名n FROM 表名1 UNION[ALL] SELECT 字段名1,字段名n FROM 表名2

六、为表和字段取别名

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

表名 [AS] 表别名

“表名”为数据库中储存的数据表的名称,“表别名”为查询时指定的表的新名称,AS关键字为可选参数。

为字段取别名:在使用SELECT语句显示查询结果时,MYSQL会显示每个SELECT后面指定的输出列,在有些情况下,显示的列的名称会很长或者名称不够直观,MYSQL可以指定列别名,替换字段或者表达式。语法如下:

列名[AS] 列别名

“列名”为表中字段定义的名称,“列别名”为字段新的名称,AS关键字为可选参数。

七、使用正则表达式查询

正则表达式通常被用来检索或替换那些符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。比如:从一个文本文件中提取电话号码,查找一篇文章中重复的单词或者替换用户输入的某些敏感词语等,这些地方都可以使用正则表达式。正则表达式强大而且灵活,可以应用于非常复杂的查询。

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

注意:LIKE运算符也可以匹配指定的字符串,但是和REGEXP正则表达式不同,LIKE匹配的字符串如果在文本中间出现,则找不到它,相应的行也不会返回。REGEXP在文本内进行匹配,如果被匹配的字符串在文本中出现,REGEXP将会找到它,相应的行也会被返回。

6.匹配指定字符中的任意一个:放括号”[]“指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本。方括号还可以指定数值集合。

SELECT * FROM 表名 WHERE 字段名 REGEXP ’[789]';(这里的数字代表的是该字段中包含了7,8,或9的记录,也可以用[7-9]来表示,意在指定集合区间。

7.匹配指定字符以外的字符:“[^字符集合]”匹配不在指定集合中的任何字符。

SELECT * FROM 表名 WHERE 字段名 REGEXP '[^a-e1-9]';(这里面的数据表示包含a~e和数字1~9以外的记录)

8.使用{n,}或者{n,m}来指定字符串连续出现的次数

”字符串{n,}"表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。例如,a{8,}就表示字母a连续出现至少8次,也可以大于8次;a{3,7}表示字母a连续出现最少3次,最多不能超过7次。

SELECT * FROM 表名 WHERE 字段名 REGEXP' x{3,}'; (表示查询该字段值出现字母x至少3次的记录)

MySQL8.0 初级学习笔记(六)查询数据相关教程

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

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

相关文章

特斯拉Autopilot事故频发,真正意义上自动驾驶还要多久问世?

这并不是特斯拉 Autopilot 首次发生事故致死案例。来源:未来汽车科技的新能源汽车更替传统汽车是时代趋势,作为业内先驱,身处聚光灯下的特斯拉不可避免会受到大众关注,例如涉及它的每一次交通安全事件从不会在媒体报道中缺席。据外…

BDD 与DSL 入门

正文: Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。在了解Behavior Driven Development之前,先介绍Test-Driven Development(TDD)即测试…

CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?

本文系网易新闻网易号“各有态度”特色内容部分资料来源于网络转自:超级数学建模接下来,仔细看下面的图与文字你会非常震撼……每天,地球上都有这么多的人在飞来飞去,就像下图中一样。▼图中圈圈里头的人口,比其他地区…

python indices_python numpy triu_indices函数

numpy.triu_indices返回函数的上三角矩阵numpy.triu_indices(n,k0,mNone)[source]Return the indices for the upper-triangle of an (n, m) array.Parameters: n : intThe size of the arrays for which the returned indices will be valid.k : int, optionalDiagonal offse…

django-xadmin使用之更改菜单url

环境:xadmin-for-python3 python3.5.2 django1.9.12 1. 在模块的adminx.py文件中增加以下代码: class AdminSettings(object):site_title XXX Data Centersite_footer XXX Inc.# menu_style accordion# 菜单设置def get_site_menu(self):return ({tit…

RISC-V会彻底改变计算吗?

来源:内容由半导体行业观察(ID:icbank)编译自「ACM」,谢谢。微处理器的开放指令集有望重塑计算,并引入新的、更强大的功能。现代计算机依靠许多元件来提供高速和高性能,但是很少有比一台精简的指…

如何将随机数存入数组java_JAVA怎么把随机数赋给数组

JAVA怎么把随机数赋给数组来源:互联网 宽屏版 评论2012-05-29 12:50:14分类: 电脑/网络 >> 程序设计 >> 其他编程语言问题描述:double aMath.random();可以产生个随机数,怎么产生100个这样的随机数然后赋值给数组并输出呢?参考答案:public…

java keystore ca_PKCS12 Java Keystore from CA and User certificate in java

问题Ive recently been put in charge of mocking up an Apple product (iPhone Configuration Utility) in Java. One of the sections Ive been a bit stuck on is a part about Exchange ActiveSync. In there, it allows you to select a certificate from your Keychain t…

干货|六维力和力矩传感器的技术与应用

来源:机器人大讲堂六维力和力矩传感器是一种提供三轴力和三轴力矩反馈的设备,并广泛应用在机器人控制、力学实验和科研等不同的场景中。不同于其他常见的测力仪器,六维力和力矩传感器可以测量完整的六自由度环境力数据,从而使其适…

Spark笔记——技术点汇总

Spark笔记——技术点汇总 目录 概况 手工搭建集群 引言 安装Scala 配置文件 启动与测试 应用部署 部署架构 应用程序部署 核心原理 RDD概念 RDD核心组成 RDD依赖关系 DAG图 RDD故障恢复机制 Standalone模式的Spark架构 YARN模式的Spark架构 应用程序资源构建…

人工智能正在推动芯片的复兴

来源丨Forbes作者丨Rob Toews编译丨科技行者半导体是数字时代的一项基础技术。美国硅谷的名字正是源自于此。过去半个世纪以来,计算技术的革命改变着社会的方方面面,而半导体技术正是这场革命的核心。自英特尔1971年推出全球第一个微处理器以来&#xff…

java integer 包_java之学习基本类型包装类的概述及Integer类的概述和构造方法

基本类型包装类的概述A:为什么会有基本类型包装类* 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。* B:常用操作* 常用的操作之一:用于基本数据类型与字符串之间的转换。* C:基本类型和包装类的对应byte Byteshort …

UVA3942 Remember the Word

题意&#xff1a;输入一个字符串(l<300000)&#xff0c;一个n(n<4000)&#xff0c;接下来n个字符串(l<100)&#xff0c;问能分解成几种字符串 题解&#xff1a;直接计算复杂度高&#xff0c;考虑DP&#xff0c;dp[i]代表以第i个字符开头的字符串分解的方案数&#xff…

MEMS为何独领风骚?看完这篇秒懂!

显微镜下的MEMS结构&#xff08;注意图片上的刻度&#xff0c;是微米哦&#xff09;文章来源&#xff1a;硬件十万个为什么卡西欧早年就以电机马达、继电器等机电产品闻名。如今的卡西欧本身就是MEMS的制造商之一&#xff0c;用MEMS的思路解决传统机械手表遇到的问题是卡西欧的…

如何把我的Java程序变成exe文件?

JAVA是一种“跨平台”的语言&#xff0c;拥有“一次编写&#xff0c;处处运行”的特点&#xff0c;让它成为当今IT行业&#xff0c;必不可少的一门编程语言。每一个软件开发完成之后&#xff0c;应该大家都需要打包程序并发送给客户&#xff0c;常见的方式&#xff1a;java程序…

福布斯:混合现实未来的八大应用场景

来源&#xff1a;AR工业应用近日&#xff0c;福布斯发布了一篇关于混合现实未来的八个值得关注的领域和应用场景。文中提到&#xff1a;随着时间的推移&#xff0c;技术永远在不断进展&#xff0c;而未来技术中很可能是AR和VR的结合形式。有报告显示&#xff1a;2024年&#xf…

php怎么实现简单的mvc框架,php实现简单的MVC框架实例

这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php实现简单的MVC框架。分享给大家供大家参考。具体如下&#xff1a;在开始之前需要知道的知识1.php基础知识2.单一…

演化树,靠不住?挑战物种出现与灭绝速率的估算方法

来源&#xff1a;Nature自然科研原文作者&#xff1a;Mark Pagel以演化树形式绘制的图表能够显示物种之间的系统发育关系&#xff0c;这类图表被广泛用于估算新物种出现以及现存物种灭绝的速率&#xff0c;但一项新的研究对这种方法提出了质疑。科学家经常试图对生物的过去是什…

Windows中使用wget整站下载

weget wget安装 Windows下载 点击下载 https://eternallybored.org/misc/wget/会跳转到wget的下载页&#xff0c;根据自己电脑选择下载的文件&#xff0c;我下载的版本为wget-1.19.1-win64.zip下载完成后解压文件,并且双击exe使用wget wget使用 在需要下载到网站的位置新建文…

java中事件的概念,事件中心上IoTHub数据的概念

我是IoTHub的新手 . 我有一个关于数据如何发送到IoTHub \ EventHub的基本查询 . 从我的阅读中我看到 - 和 IoT Hub and Event Hub - 作为不同的实体 .My Requirement我需要开发一个可以将数据从Raspberry Pi3设备发送到IoT Hub的应用程序另一个Web应用程序&#xff0c;用于订阅…