我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql支持子查询吗

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql支持子查询吗

这篇文章主要介绍了mysql支持子查询吗的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql支持子查询吗文章都会有所收获,下面我们一起来看看吧。

mysql支持子查询。子查询是指将一个查询语句嵌套在另一个查询语句中,它是MySQL中比较常用的查询方法,通过子查询可以实现多表查询。子查询可以在SELECT、UPDATE和DELETE语句中使用,而且可以进行多层嵌套;在实际开发时,子查询经常出现在WHERE子句中,语法为“WHERE <表达式> <操作符> (子查询)”,子查询必须在括号中关闭。

mysql支持子查询吗

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

mysql支持子查询。

MySQL中的子查询

子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在 WHERE 子句中。

子查询在 WHERE 中的语法格式如下:

WHERE <表达式> <操作符> (子查询)

其中,操作符可以是比较运算符和 IN、NOT IN、EXISTS、NOT EXISTS 等关键字;子查询必须在括号中关闭

1)IN | NOT IN

当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回值正好相反。

2)EXISTS | NOT EXISTS

用于判断子查询的结果集是否为空,若子查询的结果集不为空,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回的值正好相反。

例 1

使用子查询在 tb_students_info 表和 tb_course 表中查询学习 Java 课程的学生姓名

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id IN (SELECT id FROM tb_course WHERE course_name = 'Java');

mysql支持子查询吗

结果显示,学习 Java 课程的只有 Dany 和 Henry。上述查询过程也可以分为以下 2 步执行,实现效果是相同的。

1)首先单独执行内查询,查询出 tb_course 表中课程为 Java 的 id,SQL 语句和运行结果如下。

mysql> SELECT id FROM tb_course 
    -> WHERE course_name = 'Java';

mysql支持子查询吗

可以看到,符合条件的 id 字段的值为 1。

2)然后执行外层查询,在 tb_students_info 表中查询 course_id 等于 1 的学生姓名。SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id IN (1);

mysql支持子查询吗

习惯上,外层的 SELECT 查询称为父查询,圆括号中嵌入的查询称为子查询(子查询必须放在圆括号内)。MySQL 在处理上例的 SELECT 语句时,执行流程为:先执行子查询,再执行父查询。

例 2

与例 1 类似,在 SELECT 语句中使用 NOT IN 关键字,查询没有学习 Java 课程的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id NOT IN (SELECT id FROM tb_course WHERE course_name = 'Java');

mysql支持子查询吗

可以看出,运行结果与例 1 刚好相反,没有学习 Java 课程的是除了 Dany 和 Henry 之外的学生。

例 3

使用=运算符,在 tb_course 表和 tb_students_info 表中查询出所有学习 Python 课程的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info
    -> WHERE course_id = (SELECT id FROM tb_course WHERE course_name = 'Python');

mysql支持子查询吗

结果显示,学习 Python 课程的学生只有 Jane。

例 4

使用<>运算符,在 tb_course 表和 tb_students_info 表中查询出没有学习 Python 课程的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info
    -> WHERE course_id <> (SELECT id FROM tb_course WHERE course_name = 'Python');

mysql支持子查询吗

可以看出,运行结果与例 3 刚好相反,没有学习 Python 课程的是除了 Jane 之外的学生。

例 5

查询 tb_course 表中是否存在 id=1 的课程,如果存在,就查询出 tb_students_info 表中的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info
    -> WHERE EXISTS(SELECT course_name FROM tb_course WHERE id=1);

mysql支持子查询吗

由结果可以看到,tb_course 表中存在 id=1 的记录,因此 EXISTS 表达式返回 TRUE,外层查询语句接收 TRUE 之后对表 tb_students_info 进行查询,返回所有的记录。

EXISTS 关键字可以和其它查询条件一起使用,条件表达式与 EXISTS 关键字之间用 AND 和 OR 连接。

例 6

查询 tb_course 表中是否存在 id=1 的课程,如果存在,就查询出 tb_students_info 表中 age 字段大于 24 的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info
    -> WHERE age>24 AND EXISTS(SELECT course_name FROM tb_course WHERE id=1);

mysql支持子查询吗

结果显示,从 tb_students_info 表中查询出了一条记录,这条记录的 age 字段取值为 25。内层查询语句从 tb_course 表中查询到记录,返回 TRUE。外层查询语句开始进行查询。根据查询条件,从 tb_students_info 表中查询 age 大于 24 的记录。

拓展

子查询的功能也可以通过表连接完成,但是子查询会使 SQL 语句更容易阅读和编写。

一般来说,表连接(内连接和外连接等)都可以用子查询替换,但反过来却不一定,有的子查询不能用表连接来替换。子查询比较灵活、方便、形式多样,适合作为查询的筛选条件,而表连接更适合于查看连接表的数据。

关于“mysql支持子查询吗”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mysql支持子查询吗”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql支持子查询吗

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Teradata支持并行查询处理吗

是的,Teradata支持并行查询处理。Teradata数据库使用Massively Parallel Processing(MPP)架构,可以并行处理复杂查询,从而提高查询性能和并发处理能力。通过将查询任务分配到多个节点并同时执行,Ter
Teradata支持并行查询处理吗
2024-04-09

MySQL ORM框架的异步查询支持

MySQL ORM框架中的异步查询支持允许开发者在执行数据库操作时不必等待查询完成,可以继续执行其他任务。这种支持对于提高应用程序的性能和响应能力非常有用,特别是在处理大量并发请求或需要快速响应用户输入的场景中。不同的MySQL ORM框
MySQL ORM框架的异步查询支持
2024-10-05

PHP支持MySQL吗

这篇文章主要讲解了“PHP支持MySQL吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP支持MySQL吗”吧!PHP支持MySQL;MySQL是与PHP搭配使用最多的数据库,它们常被称
2023-07-02

MySQL子查询

子查询(嵌套查询)子查询是指一个查询语句嵌套在另一个查询语句的内部的查询eg:要查询员工工资比‘Abel’高的员工名字SELECT name,salary #外查询(主查询)FROM employeesWHERE salary > (#查询"Abel"
MySQL子查询
2021-02-10

LINQ查询支持哪些语法

这篇文章主要介绍“LINQ查询支持哪些语法”,在日常操作中,相信很多人在LINQ查询支持哪些语法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LINQ查询支持哪些语法”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-17

Cassandra支持哪些查询语言

Cassandra支持CQL(Cassandra Query Language)查询语言。CQL是一种基于SQL的查询语言,具有类似SQL的语法和功能,但也具有一些与Cassandra数据库特性相关的特殊功能和语法。通过CQL,用户可以执行
Cassandra支持哪些查询语言
2024-04-09

MySQL 子查询和分组查询

概述子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询。 先做一下数据准备,这边建立三张表:班级、学生、毕业成绩表,用于后面的操作:drop da
2022-05-12

MongoDB 如何支持类 SQL 查询

看来,这确实是非常难得一件事!否则官方也早该把对 SQL 的支持内置了;即便没内置,众多的开源贡献者也应该在外面给出了可用的补丁。 关系数据库数据模型简单,都是行列分明的单层二维表;所以描述它的计算的语言(SQL)就相对简单;而 MongoDB 里是多层嵌套的
MongoDB 如何支持类 SQL 查询
2017-05-15

编程热搜

目录