MySQL数据库子查询语法规则是什么

MySQL数据库子查询语法规则是什么

查询是在查询语句里面再嵌套一个查询,这是因为我们在提取数据的时候有很多不知道的数据产生了依赖关系。此时我们就需要先查询一组数据的结果集,然后将这个结果集作用为下一个查询的对象。在 “表连接的章节”,我们曾说过子查询的效率低下的问题,其实并不是所有的子查询效率都是低下的,“WHERE” 子查询在匹配记录的时候要反复执行,这是不推荐使用的;但是如果将查询结果集当做一张表来使用,与其他的表做一个连接,这就是 “FROM” 子句的子查询了,这种子查询的方式,还是比较推荐使用的。

子查询简介

子查询是一种查询语句中再嵌套一个查询的语句

普通查询语句分为 “SELECT” 子查询、“FROM” 子查询、“WHERE”子查询;(重点推荐使用 ” ‘FROM’ 子查询”)

子查询示例如下:

查询底薪超过公司平均底薪的员工信息。(之前我们使用过表连接的方式做个这个案例,这里来看一下如何通过子查询的方式来实现。)

SELECT    empno, ename, salFROM     t_empWHERE    sal >= (SELECT AVG(sal) FROM t_emp);    -- 正常情况下,将聚合函数作为 WHERE 子句的条件是不可以的,但是这里利用子查询与聚合函数先将平均底薪查询出来,这就变成具体的数据了-- 这种情况下,作为 WHERE 子句的条件,就可以被使用了

MySQL数据库子查询语法规则是什么

以上就是 WHERE 子句的子查询,不过 WHERE 子句的子查询使不推荐使用的,应该使用表连接的写法。

WHERE 子查询

在书写 SQL 语句的时候, WHERE 子查询最符合我们人的思考逻辑

虽然这种 子查询 最简单、最容易理解,但是却是效率很低的子查询

以刚刚演示的 查询底薪超过公司平均底薪的员工信息 来说吧。“WHERE” 子句拿每一条员工的记录与 “SELECT” 子查询做比较的时候,子查询都需要重新执行一次。如果员工表有 10000 条记录,那么 子查询 就需要执行 10000次,反复执行这么多次,效率上是极其低下的。

MySQL数据库子查询语法规则是什么

在查询语句中,反复被查询的子查询被称为 “相关子查询”,这里的 “WHERE” 子查询就属于 “相关子查询” 应该避免使用这种子查询。

FROM 子查询

在查询语句中, “FROM” 子查询只会执行一次,这与 “WHERE” 子查询是相反的,所以查询效率很高。

同样以 查询底薪超过公司平均底薪的员工信息 为例,来看一看 “FROM” 子查询是如何实现的。

SELECT    e.empno, e.ename, e.sal, t.avgFROM t_emp e JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) tON e.deptno = t.deptno AND e.sal >= t.avg;-- 首先,按照每一个部门编号去分组,然后统计部门标号与该部门对应的平均月薪。将这个结果集作为一张临时的表与员工的表做连接。-- 连接的条件为 "员工表" 的 "部门编号" = "结果集" 的 "部门编号",并且员工的月薪大于部门的平均月薪

MySQL数据库子查询语法规则是什么

所以这个题目利用 “FROM” 子查询也可以轻松的实现,未必要使用 “WHERE” 子查询。因为 “FROM” 子查询并不是 相关子查询,所以再解决一些问题的时候应该有限选择这种子查询类型。

SELECT 子查询

说一句实在的,这种子查询在我目前经历的所有项目中,一次也没见到过。

究其原因呢,是因为 “SELECT” 子查询也是相关子查询,它在SQL语句中也会反复的执行,查询效率很低。

这里我们就举个例子:比如说现在要查询每个员工的部门信息,

SELECT    e.empno,    e.ename,    (SELECT dname FROM t_dept WHERE deptno = e.deptno) AS 部门名称FROM t_emp e;-- 先试用 "SELECT" 子查询查询出 "部门表" 中的部门名称,约束条件为 "部门表"中的 "部门编号" 与 "员工表"中的 "部门编号" 一致-- 将 "SELECT" 子查询得到的 "部门名称" 作为SQL语句中的一个字段进行输出

MySQL数据库子查询语法规则是什么

虽然执行出来的结果是对的,但是执行的效率实在是太低了,所以这种 “SELECT” 子查询的方式也是不推荐使用的,了解即可,当我们看到有其他人使用 “SELECT” 子查询的时候,最好善意的提醒一下。

到此,关于“MySQL数据库子查询语法规则是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

文章标题:MySQL数据库子查询语法规则是什么,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/22682

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月2日 下午10:20
下一篇 2022年9月5日 下午11:57

相关推荐

  • mdf文件如何开启

    mdf文件打开方法: 1、下载一个SQLServer管理工具。 2、下载好开始安装。 3、完成后点击“导入连接”。 4、找到需要打开的mdf文件点击“打开”即可。 5、打开列表即可看到mdf文件。 到此,相信大家对“mdf文件如何开启”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关…

    2022年9月8日
    10200
  • php判断数组中指定值是不是最后一个元素

    两种判断方法:1、利用end()函数和“===”运算符,获取数组最后一个元素的值,比较该元素值是否为指定值即可,语法“end($arr===”指定值”)”,如果相等则是,反之则不是。2、利用array_pop()函数和“===”运算符,语法“array_pop($arr===…

    2022年9月16日
    14600
  • SQL Server怎么操作Json格式字段数据

    1 json存储 在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar()或 varchar()进行存储,不要用text进行存储,用text时候,json的函数不支持。 2 json操作 主要介绍5个函数: (1)openJson:打开Json字符串 (2)IsJ…

    2022年8月29日
    31900
  • css中的选择器包不包括超文本标记选择器

    不包括。css选择器有:1、标签选择器,是通过HTML页面的元素名定位具体HTML元素;2、类选择器,是通过HTML元素的class属性的值定位具体HTML元素;3、ID选择器,是通过HTML元素的id属性的值定位具体HTML元素;4、通配符选择器“*”,可以指代所有类型的标签元素,包括自定义元素;…

    2022年9月1日
    20000
  • 如何实现Web日志分析

    1 、Web日志 Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。 我们来看一条Apache的访问日志: 127.0.0.1 – – [11/Jun/20…

    2022年9月24日
    8900
  • line是属于哪个国家的聊天软件

    line是“日本”的聊天软件。LINE是日本公司NHN Japan于2011年推出的一款即时通讯软件;LINE对用户吸引力最大的是聊天表情贴图,超过250种的表情贴图让用户在使用Line时多了一个有趣的心情传达工具,其中line官方设计可爱且特色鲜明的馒头人、可妮兔、布朗熊和詹姆士饱受好评,也让四个…

    2022年9月16日
    40600
  • Redis如何实现排行榜及相同积分按时间排序功能

    在日常的开发中,经常会碰到需要对用户的分值等进行排序,比如在游戏里面需要对战斗力进行排行,在组队活动中需要对各个队伍的贡献值进行排行,在微信中需要对各个好友的步数进行排行,此时一般会选择redis的有序集合对用户的分数进行存储,从而实现排行榜的需求,但是不同的场景排行榜的方式也略有不同,以下根据自己…

    2022年8月30日
    31800
  • windows 0xc0000221如何解决

    解决方法: 方法一: 1、首先我们将系统光盘插入到电脑中,在bios设置中选择光盘启动。 2、然后跟着提示,连续选择“下一步” 3、进入安装界面后,点击其中的“修复计算机”就可以引导修复了。 方法二: 1、没有光盘也没有关系,只要准备一块系统u盘就可以了。 2、我们还需要另一台使用相同系统的电脑,将…

    2022年9月16日
    16500
  • 电脑0xc0000011如何解决

    0xc0000011修复方法: 方法一: 1、首先我们需要查看是否是软件问题,开机时按住“F8”直到进入系统修复界面。 2、接着在其中选择“最后一次正确的配置”回车进入。 3、如果我们无法进入系统,那么说明就不是安装的软件或驱动等问题。 方法二: 1、这时候就需要采用系统盘进行修复了。 2、如果我们…

    2022年9月18日
    11400
  • windows证照之星怎么排版一寸

    证照之星排版一寸的方法 1、 打开证照之星 软件,点击主界面左上侧的“系统设置”,选择“打印排版设置”。 2、打开“打印排版设置”之后,点击打印设置对话框的‘新建’按钮。 3、点击“新建”之后,就会出现打印选项的选择栏,如果是用自己的打印机进行打印就选择“本机打印”, 如果需要去外面打印社进行打印的…

    2022年9月26日
    7300
联系我们
站长微信
站长微信
分享本页
返回顶部