More SQL(Focus Subqueries、Join)

目录

Subqueries

Subqueries That Return One Tuple

Subqueries and Self Connection

The IN Operator

The Exists Operator

The Operator ANY

The Operator ALL

Union, Intersection, and Difference(交并差)

Bag Semantics

Controlling Duplicate Elimination

Inner Joins

Outer Joins


Subqueries

  • A parenthesized SELECT-FROM-WHERE statement (subquery ) can be used as a value in a number of places, including FROM and WHERE clauses.(将子查询的结果作为一张表进行查询)

  • Example: in place of a relation in the FROM clause, we can use a subquery and then query its result.

  • Must use a tuple-variable to name tuples of the result.(必须为子查询的这张临时表命名)

Subqueries That Return One Tuple

  • If a subquery is guaranteed to produce one tuple, then the subquery can be used as a value.

  • Usually, the tuple has one component.

  • A run-time error occurs if there is no tuple or more than one tuple.

例题:

  

子查询的优先级比父查询的优先级更高

Subqueries and Self Connection

思考题:是不是所有的额子查询都能够写成连接形式,又是不是所有的连接都能写成子查询形式?并且思考两者的效率如何?

The IN Operator

  1. <tuple> IN (<subquery>) is true if and only if the tuple is a member of the relation produced by the subquery.(IN表达式正确当且仅当元组在子查询返回的结果中)

  2. Opposite: <tuple> NOT IN (<subquery>).

  3. IN-expressions can appear in WHERE clauses.

The Exists Operator

  • EXISTS(<subquery>) is true if and only if the subquery result is not empty.

  • Example: From Beers(name, manf) , find those beers that are the unique beer by their manufacturer.

SELECT name
FROM Beers b1
WHERE NOT EXISTS (SELECT *FROM BeersWHERE manf = b1.manf ANDname <> b1.name);

The Operator ANY

  • x = ANY(<subquery>) is a boolean condition that is true if x equals at least one tuple in the subquery result.(ANY语句为真当且仅当x与其中的至少一个元组相同)

= could be any comparison operator.(=可以是其他的运算符号)

Example: x >= ANY(<subquery>) means x is not the uniquely smallest tuple produced by the subquery.

  • Note tuples must have one component only.

The Operator ALL

  • x <> ALL(<subquery>) is true if for every tuple t in the relation, x is not equal to t.
  • That is, x is not in the subquery result.
<> can be any comparison operator.

Example: x >= ALL(<subquery>) means there is no tuple larger than x in the subquery result.

Union, Intersection, and Difference(交并差)

Union, intersection, and difference of relations are expressed by the following forms, each involving subqueries:

  • (<subquery>) UNION (<subquery>)

  • (<subquery>) INTERSECT (<subquery>)

  • (<subquery>) EXCEPT (<subquery>)

要注意的是:UNION产生的结果是一个集合,集合是不允许出现重复元素的,但如果写法是(UNION ALL那么产生的结果是一个包,包中是允许重复元素的)

深入思考:交、并、差运算的前提应该都是排序,所以说在排序之后便直接产生了集合

Bag Semantics

  • Although the SELECT-FROM-WHERE statement uses bag semantics, the default for union, intersection, and difference is set semantics.
  • That is, duplicates are eliminated as the operation is applied. 

Controlling Duplicate Elimination

  • Force the result to be a set by SELECT DISTINCT . . .
  • Force the result to be a bag (i.e., don’t eliminate duplicates) by ALL, as in . . . UNION ALL . . .

Inner Joins

SELECT buyer_name, sales.buyer_id, qty
FROM buyers INNER JOIN sales
ON buyers.buyer_id = sales.buyer_id

Outer Joins

SELECT buyer_name, sales.buyer_id, qty
FROM buyers LEFT OUTER JOIN sales
ON buyers.buyer_id = sales.buyer_id

SELECT buyer_name, sales.buyer_id, qty
FROM sales RIGHT OUTER JOIN buyers
ON buyers.buyer_id = sales.buyer_id

内连接和外连接的核心区别在于对于未匹配行的处理: 

特性内连接(INNER JOIN)外连接(OUTER JOIN)
匹配策略仅保留两表中完全匹配的行保留至少一个表的所有行,未匹配的部分用 NULL 填充
结果集大小可能小于或等于参与连接的表的行数之和可能等于或大于参与连接的表的行数之和
默认关键字JOIN(等价于 INNER JOIN必须显式指定类型(LEFT/RIGHT/FULL
数据完整性丢弃未匹配的数据保留所有数据(通过 NULL 表示无匹配)

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

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

相关文章

OpenGL Chan视频学习-4 Vertex Buffers and Drawing a Triangle in OpenGL

一、视频链接 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 二、相关网站 docs.gl 三、代码整理 c #include <GL/glew.h> #include <GLFW/glfw3.h>#include<iostream>int…

WSL中ubuntu通过Windows带代理访问github

WSL中ubuntu通过Windows带代理访问github 前言: WSL是Windows下的ubuntu访问工具&#xff0c;目前无法访问外网&#xff0c;因此需要配置一下。 步骤一 代理中进行如下设置: 步骤二 ubuntu22.04中修改配置 使用如下命令获取IP地址&#xff1a; ip route | grep default | aw…

为(FramePack)的视频生成添加首尾帧功能

文章目录 &#xff08;一&#xff09;前言&#xff08;二&#xff09;可选的尾帧&#xff08;三&#xff09;测试&#xff08;四&#xff09;例子 &#xff08;一&#xff09;前言 前提是这个&#xff1a;《笔记本6GB本地可跑的图生视频项目&#xff08;FramePack&#xff09;…

C语言中:递归问题的深入研究

C语言中&#xff1a;递归问题的深入研究 函数的递归有两个限制条件&#xff1a; 1.递归存在限制条件&#xff0c;当满⾜这个限制条件的时候&#xff0c;递归便不再继续。 2.每次递归调⽤之后越来越接近这个限制条件。 例子&#xff1a; #include <stdio.h> int main…

《C++20新特性全解析:模块、协程与概念(Concepts)》

引言&#xff1a;C20——现代C的里程碑 C20是继C11之后最具革命性的版本&#xff0c;它通过模块&#xff08;Modules&#xff09;、协程&#xff08;Coroutines&#xff09;和概念&#xff08;Concepts&#xff09;三大核心特性&#xff0c;彻底改变了C的代码组织方式、并发模…

xcode卡死问题,无论打开什么程序xcode总是在转菊花,重启电脑,卸载重装都不行

很可能是因为我们上次没有正常关闭Xcode&#xff0c;而Xcode保留了上次错误的一些记录&#xff0c;而这次打开Xcode依然去加载错误的记录&#xff0c;所以必须完全删除这些记录Xcode才能加载正常的项目。 那么也就是说&#xff0c;我们是不是只需要删除这部分错误记录文件就可以…

华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台

目录 前言 1 Dify与华为云部署概述 1.1 什么是 Dify 1.2 华为云与 Flexus 云服务器的优势 2 云服务器部署 Dify 的步骤详解 2.1 模板选择 2.2 参数配置 2.3 资源栈设置 2.4 确认部署信息并执行 3 部署成功后的操作与平台使用指南 3.1 访问平台 3.2 设置管理员账号 …

物流项目第九期(MongoDB的应用之作业范围)

本项目专栏&#xff1a; 物流项目_Auc23的博客-CSDN博客 建议先看这期&#xff1a; MongoDB入门之Java的使用-CSDN博客 需求分析 在项目中&#xff0c;会有两个作业范围&#xff0c;分别是机构作业范围和快递员作业范围&#xff0c;这两个作业范围的逻辑是一致的&#xf…

网络拓扑如何跨网段访问

最近领导让研究下跟甲方合同里的&#xff0c;跨网段访问怎么实现&#xff0c;之前不都是运维网工干的活么&#xff0c;看来裁员裁到动脉上了碰到用人的时候找不到人了&#xff0c; 只能赶鸭子上架让我来搞 IP 网络中&#xff0c;不同网段之间的通信需要通过路由器&#xff0c;…

【前端】PWA

目录 概述实战vue项目问题汇总 PWA&#xff08;渐进式 Web 应用&#xff0c;Progressive Web App&#xff09; 2015提出 概述 PWA 是一种提升 Web 应用体验的技术&#xff0c;使其具备与原生应用相似的功能和性能。PWA不仅能够在网页上运行&#xff0c;还能在手机或桌面上像传…

湖北理元理律师事务所:从法律合规到心灵契合的服务升维

债务优化不仅是数字游戏&#xff0c;更是信任重建的过程。湖北理元理律师事务所在实践中发现&#xff1a;68%的债务纠纷中存在沟通断裂。为此&#xff0c;机构构建了“三维信任修复机制”。 维度一&#xff1a;信息透明的技术实现 区块链存证舱&#xff1a;客户手机实时查看律…

香橙派3B学习笔记2:Vscode远程SSH登录香橙派_权限问题连接失败解决

Vscode下载插件&#xff0c;ssh远程登录香橙派。 ssh &#xff1a; orangepi本地ip 密码 &#xff1a; orangepi 安装 Remote - SSH 扩展SSH插件&#xff1a; SSH远程连接&#xff1a; ssh usernameremote_host ssh -p port_number usernameremote_host默认22端口号就用第一行…

VMware安装Ubuntu实战分享大纲

深入解析快速排序 一、分治策略分解 分解阶段&#xff1a; 选择基准元素 $pivot$将数组划分为三个子集&#xff1a; $$ left {x | x < pivot} $$ $$ equal {x | x pivot} $$ $$ right {x | x > pivot} $$ 递归排序&#xff1a; 对 left 和 right 子集递归调用快速排…

AI 让无人机跟踪更精准——从视觉感知到智能预测

AI 让无人机跟踪更精准——从视觉感知到智能预测 无人机跟踪技术正在经历一场前所未有的变革。曾经,我们只能依靠 GPS 或简单的视觉识别来跟踪无人机,但如今,人工智能(AI)结合深度学习和高级视觉算法,正让无人机的跟踪变得更加智能化、精准化。 尤其是在自动驾驶、安防监…

GATED DELTA NETWORKS : IMPROVING MAMBA 2 WITH DELTA RULE

TL;DR 2024 年 Nvidia MIT 提出的线性Transformer 方法 Gated DeltaNet&#xff0c;融合了自适应内存控制的门控机制&#xff08;gating&#xff09;和用于精确内存修改的delta更新规则&#xff08;delta update rule&#xff09;&#xff0c;在多个基准测试中始终超越了现有…

Laravel单元测试使用示例

Date: 2025-05-28 17:35:46 author: lijianzhan 在 Laravel 框架中&#xff0c;单元测试是一种常用的测试方法&#xff0c;它是允许你测试应用程序中的最小可测试单元&#xff0c;通常是方法或函数。Laravel 提供了内置的测试工具PHPUnit&#xff0c;实践中进行单元测试是保障代…

【FastAPI】--3.进阶教程(二)

【FastAPI】--进阶教程1-CSDN博客 【FastAPI】--基础教程-CSDN博客 目录 1.FastAPI - CORS ​2.FastAPI - CRUD 操作 2.1.Create 2.2.Read 2.3.Update 2.4.Delete 3.FastAPI - 使用 GraphQL 4.FastAPI - Websockets 5.FastAPI - 事件处理程序 6.FastAPI - 安装 Fla…

FEMFAT许可的更新与升级流程

随着工程仿真技术的不断发展&#xff0c;FEMFAT作为一款领先的疲劳分析软件&#xff0c;持续为用户提供卓越的性能和创新的功能。为了保持软件的最新性和高效性&#xff0c;了解FEMFAT许可的更新与升级流程至关重要。本文将为您详细介绍FEMFAT许可的更新与升级流程&#xff0c;…

麒麟v10,arm64架构,编译安装Qt5.12.8

Window和麒麟x86_64架构&#xff0c;官网提供安装包&#xff0c;麒麟arm64架构的&#xff0c;只能自己用编码编译安装。 注意&#xff0c;“桌面”路径是中文&#xff0c;所以不要把源码放在桌面上编译。 1. 下载源码 从官网下载源码&#xff1a;https://download.qt.io/arc…

20250528-C#知识:结构体

C#知识&#xff1a;结构体 结构体是一种自定义数据类型&#xff0c;用户可以根据自身需求设计自己的结构体用来表示某种数据集合。结构体是一种值类型&#xff0c;结合了值类型的优点&#xff0c;避免了引用类型的缺点。本文简单介绍并探究一下C#中的结构体。 结构体一般写在命…