SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)

这篇具有很好参考价值的文章主要介绍了SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不相关子查询

子查询的查询条件不依赖于父查询,称不相关子查询。子查询可以单独运行的

select stu_id,sex,age
from student t
where sex=(
			select sex
			from student
			where stu_id='10023'
)

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接),sql,数据库

相关子查询 ==== 关联子查询

子查询的查询条件依赖于父查询,称为 相关子查询。子查询不能单独运行的
子查询 也称 内部查询
父查询 也称 外部查询
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称为 关联子查询

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接),sql,数据库

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接),sql,数据库

首先,从父查询中取出table1表的一个元组outer,将元组outer的expr2值传递给子查询。

然后,执行子查询,得到某个值,用这个值代替 子查询的结果 ,父查询由 嵌套查询 变为 只有一层外层查询的简单的查询。

最后,执行这个简单的查询,即得结果。

  1. 相关 vs 不相关

相关子查询 的查询过程 就像 高级语言的 双重For循环一样,先执行一次外层循环,然后执行内层循环完毕后,继续执行外层循环的下一个值。

不相关子查询 就是先一次性把 内层查询 执行,再 执行外层 查询。

在select 语句中,除了 group by和 limit 之前,其他的位置都可以声明 子查询

Exists 、Not Exists

select col1,col2,…
from table1 outer
where Exists (
select col1,col2
from table2
where expr1=outer.expr2
);

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接),sql,数据库

关联子查询通常会和EXISTS操作符一起使用,用来检查在子查询中是否存在满足条件的行。
如果在子查询中不存在满足条件的行
1、条件返回False
2、继续在子查询中查找
3、若最终子查询都没查到,则主查询的记录 就舍弃了
如果在子查询中存在满足条件的行
1、不在子查询中继续查找
2、条件返回True
3、主查询的记录会被保留

NOT EXISTS 关键字 表示 如果不存在某种条件,则返回True,否则返回False

通常 多表查询 比 子查询效率更高一些,
数据搜索引擎 如果子查询能转换城成多表查询,会自动转换。文章来源地址https://www.toymoban.com/news/detail-634247.html

到了这里,关于SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库系统头歌实验二 SQL的多表查询

    第一关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图

    2024年02月07日
    浏览(53)
  • MySQL---多表联合查询(下)(内连接查询、外连接查询、子查询(ALL/ANY/SOME/IN/EXISTS关键字)、自关联查询)

    1. 内连接查询 数据准备: 内连接查询语法: 2. 外连接查询 语法: 左外连接: left outer join:             select * from A left outer join B on 条件 ;             右外连接: right outer join:             select * from A right outer join B on 条件 ;             满外连接 : full out

    2024年02月04日
    浏览(53)
  • 数据库SQL查询相关练习

    1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。 8、列出所有姓刘的职工

    2024年01月25日
    浏览(47)
  • SQL中exists和not exists的用法

    exists 和 not exists用法 exists和not exists 用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值TRUE或FALSE。 只不过exists和not exists 正好相反 exists(sql 返回结果集,为真) exists括号中sql语句有结果,才会继续执行where 条件,没结果视为条件不成立

    2024年02月16日
    浏览(38)
  • Navicat恢复数据库连接及查询sql的解决办法

    因为公司给电脑加域,导致使用新的用户账户,原先的很多配置都失效了,本篇是讲述一下如何恢复数据库连接工具Navicat的连接数据。 这里需要指出说明一下: Navicat的数据sql查询文件、备份文件存储在 C:UsersAdministratorDocumentsNavicatMySQLservers navicat的数据库链接信息存储在

    2024年02月08日
    浏览(56)
  • SQL之多表查询

    项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一) 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一

    2024年02月06日
    浏览(38)
  • SQL查询数据之多表(关联)查询

      数据表: 关联查询主要分为:(inner join)交叉关联、(left join)左关联、(right join)右关联 (inner join)交叉关联: 定义:(inner join)交叉关联只返回两个表联结相等的字段的行 语法:select * from 表1 inner join 表2 on 表1.字段号=表2.字段号 比如我要查学生表和成绩表的交叉

    2023年04月08日
    浏览(38)
  • SQL语言多表查询

        多表查询的基础是单表查询,一些基本的语句都在单表查询中介绍过了 目录 主外键相等链接(两个表) join链接(两个表) 子查询(两个表) 自链接(两个表) 别名 为什么加或 多表查询(多于两个表)  需要明确的是,原本的结构不能变,所以 提到多表查询,是什么

    2024年02月05日
    浏览(45)
  • 实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库

      C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用 C++ 连接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。 连接 SQL Server 数据库 要使用 C++ 连接 SQL Server 数据库,可以使用 Microsoft 的 ADODB 库。以

    2024年02月05日
    浏览(61)
  • MyBatis多表查询+动态sql

    在全局配置文件中中设置MyBatis执行日志 假设有一个用户表和文章表,实体类中一个关联关系。 用户实体类 文章实体类 如果想查询的结果包含UserInfo的信息就需要使用,⼀对⼀映射要使⽤ association 标签,因为一篇文章只能对应一个作者。 Controller控制器代码 Service服务层代码

    2023年04月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包