连接查询-外连接(FULL JOIN)、内连接(JOIN)、自身连接

news2024/10/5 14:45:51

一、表与表之间存在着某种联系,如果一个查询必须在多个表之间完成,则需要用到连接查询

二、连接查询的SQL查询语句

格式:

SELECT A1,A2,...,Am

FROM R1,R2,..,Rn

WHERE F

语义:

对R1、R2等多个表所形成的笛卡尔积通过F条件进行筛选,筛选出符合条件的元组并在SELECT语句中对相应的属性作以显示

三、多表连接查询

SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】

FROM <表名或视图名1>【,<表名或视图名2>,...】

【WHERE <元组选择条件表达式>】

1、多个表的连接条件在WHERE子句后面与元组选择条件使用AND进行衔接

2、SELECT语句缺少连接条件,就会在多表的广义笛卡尔积上进行查询

3、举例1:查询选修课程号为“003”的学生姓名和成绩

select s.sN,sC.grade
from s,sC
where cNo='003' and s.sNo=sC.sNo

4、举例2:查询选修“高分子材料”课程的学生的学号、姓名、成绩

select s.sNo,sN,grade
from c,s,sC
where c.cNo=sC.cNo and
      s.sNo=sC.sNo and
	  cN='高分子材料'

注意:在多个表中同时存在的同名属性要在SELECT语句中查询的话前面必须加上表名前缀

四、外连接查询

1、在SQL语句中,外连接在FROM子句中指定,其语法规则如下:

FROM  <左关系 > LEFT|RIGHT|FULL 【OUTER】JOIN <右关系> ON <连接条件>

2、介绍:

左外连接:LEFT 【OUTER】 JOIN

右外连接:RIGHT 【OUTER】 JOIN

全外连接:FULL 【OUTER】 JOIN

连接条件可包含对参与连接的关系进行元组选择的条件

3、注意:!!!!

在外连接查询中,连接条件一定是在FROM子句中的ON项的后面的

4、实质:

外连接查询的实质是将连接到的表中的元组一定要显示出来,其它未匹配和其它表或者元组选择条件)到的列置为NULL

5、举例1(反应实质):查询所有学生姓名及选修课称号为“003”的成绩,没有选修该课程的学生,成绩显示为空。

select sN,grade
from s LEFT OUTER JOIN sC on s.sNo=sC.sNo and sC.cNo='003'

错误示例:

select sN,grade
from s LEFT OUTER JOIN sC on s.sNo=sC.sNo
where   cNo='003'

原因:WHERE子句的处理对象是进行左外连接好的新表中的元组,而正确示例中的元组选择条件的处理对象是受着左外连接影响的多个表中的元组

6、内连接查询

(1)常规连接查询也称为内连接查询,在FROM子句中指定

(2)语法规则:

FROM <左关系>【INNERJOIN <右关系> ON <连接条件>

(3)举例:查询选修“高分子材料”课程的学生的学号、姓名和成绩。

select s.sNo,s.sN,sC.grade
from c
join sC on c.cNo=sC.cNo 
join s on s.sNo=sC.sNo 
where c.cN='高分子材料'

五、自身连接查询

1、产生原因

SELECT语句进行查询一次只能去处理同一个表中的一个元组,要想同时处理同一个表中的两个元组就要用到自身连接查询

2、概述

(1)一个表与其自己进行连接

(2)需要对两个表进行重命名

(3)新表名作为表中属性的前缀

3、举例:查询每门课程的间接先修课程号

select first.cNo,second.pC
from c first,c second
where first.pC=second.cNo 

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

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

相关文章

大厂Java面试题:详细描述MyBatis缓存的实现原理

大家好&#xff0c;我是王有志。今天给大家带来的是一道来自光大科技的 MyBatis 面试题&#xff1a;详细描述MyBatis缓存的实现原理。 在通过源码分析 MyBatis 一二级缓存的实现原理前&#xff0c;我先给出我的回答。 首先是 MyBatis 一级缓存的实现原理&#xff1a; MyBaits…

Clion控制台打印中文乱码

第一步 第二步 第三步 ctrlaltshift/ 把run.processes,with.pty

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…

NiceGUI:让Python变身为Web应用开发大师的神器

简介 NiceGUI是一个易于使用的基于Python的UI框架&#xff0c;可以在您的Web浏览器中使用。您可以创建按钮、对话框、Markdown、3D场景、图表等等。 NiceGUI开源支持较好&#xff0c;代码更新频率较高&#xff0c;目前已经更新至: V1.4.26。 适用场景 NiceGUI非常适用于各种…

端点物联开发教程之(一)什么是端点物联

目录 一、手机端演示 二、开发套件 三、嵌入式端 四、平台端 五、手机端 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 物…

BL104钡铼多协议采集网关助力企业智能化转型

BL104钡铼多协议采集网关&#xff08;PLC物联网关BL104&#xff09;是为满足工业环境需求而设计的专业工业级协议转换网关。它在企业智能化转型过程中扮演着关键角色&#xff0c;为企业提供了高效、稳定的通信解决方案&#xff0c;助力企业实现智能化转型。 首先&#xff0c;P…

可转债全部历史因子数据,提供api支持

今天在写可转债系统&#xff0c;顺便下载了一下服务器的可转债数据&#xff0c;给大家研究使用 from trader_tool.stock_data import stock_datafrom trader_tool.lude_data_api import lude_data_apiimport osclass convertible_bond_back_test_system: 可转债回测系统…

弱监督语义/实例/全景分割综述2022

摘要 我们从一个统一的角度总结了现有的高效标签图像分割方法&#xff0c;讨论了一个重要的问题:如何弥合弱监督和密集预测之间的差距——目前的方法大多是基于启发式先验&#xff0c;如跨像素相似性、跨标签约束、跨视图一致性和跨图像关系。最后&#xff0c;对标签高效深度图…

黑苹果睡眠总是自动唤醒(RTC)

黑苹果睡眠总是自动唤醒【RTC】 1. 问题2. 解决方案2.1. 查看重启日志2.2. 配置Disable RTC wake scheduling补丁 3. 后续4. 参考 1. 问题 黑苹果EFI 更换后&#xff0c;总是在手动 睡眠后&#xff0c;间歇性重启&#xff0c;然后再次睡眠&#xff0c;然后再重启。原因归结为&…

HX519 防倒流数据线芯片IC

一般概述 苹果iPhone防倒流数据线芯片&#xff0c;可完美支持iPhone、iPad、iPod等8针闪电接口的数据传输同步功能及充电功能。 特点 ❥集成度高&#xff0c;极少的外围元器件。 ❥电路简单&#xff0c;价格优势明显。 ❥稳定性高&#xff0c;兼容性强。 ❥与市面上普通…

meilisearch,老版本的文档

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

golang函数

【1】函数&#xff1a; 对特定的功能进行提取&#xff0c;形成一个代码片段&#xff0c;这个代码片段就是我们所说的函数 【2】函数的作用&#xff1a;提高代码的复用性 【3】函数和函数是并列的关系&#xff0c;所以我们定义的函数不能写到main函数中 【4】基本语法 func 函…

北交字节联合提出ClassDiffusion: 使用显式类别引导的一致性个性化生成。

在个性化生成领域, 微调可能会引起过拟合导致模型无法生成与提示词一致的结果。针对这个问题&#xff0c;北交&字节联合提出ClassDiffusion&#xff0c;来提升个性化生成的一致性。 通过两个重要观察及理论分析提出了新的观点:一致性的损失是个性化概念语义偏移导致的, 还…

three.js 第四节 - 创建顶点(索引的使用)

顶点不共用&#xff08;不使用索引&#xff09; // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControlsconst scence new THREE.Scene()const camera new THREE.PerspectiveCamera(45, …

cesium 多边形加边框宽度 Polygon outlineWidth

cesium中用polygon添加多边形时&#xff0c;设置outlineWidth无效&#xff0c;常见做法是在添加polygon的同时加一个polyline&#xff0c;但是当多边形相邻两条边的角度比较小的情况下&#xff0c;这两个点的连接处有明显的交叉。 解决方案&#xff1a; 第一步&#xff1a;通过…

永磁同步电机滞环电流控制(PI双闭环)matlab仿真模型

微♥“电击小子程高兴的MATLAB小屋”获取模型 1.滞环电流控制的原理 将给定的电流信号与反馈的电流信号进行比较&#xff0c;然后控制它俩之间的差值稳定在一个滞环范围内&#xff0c;若超出范围&#xff0c;则进行相应的调节操作。 操作如下叙述&#xff1a;假设以三相中的A相…

网络安全领域国内外有哪些法律法规?

1. 中国 1.中华人民共和国网络安全法&#xff08;简称网安法&#xff09; 生效时间&#xff1a;2017年6月1日主要内容&#xff1a;规范网络运营行为&#xff0c;维护网络安全&#xff0c;保护国家安全和公共利益&#xff0c;以及保护公民、法人和其他组织的合法权益。 2.中华…

使用AlphaCodium进行代码生成,从提示工程到流程工程

AlphaCodium 的代码生成方法 论文地址&#xff1a;https://arxiv.org/pdf/2401.08500.pdf 源码地址&#xff1a;https://github.com/codium-ai/alphacodium 研究要点包括 **挑战&#xff1a;**现有的自然语言优化方法无法扩展 LLM 的代码生成能力**解决方案&#xff1a;**使…

通过搭建 24 点小游戏应用实战,带你了解 AppBuilder 的技术原理

本文将通过一个 24 点小游戏的案例&#xff0c;详细介绍百度智能云千帆 AppBuilder 的基本技术原理和使用方法&#xff0c;帮助读者快速掌握 AI 原生应用的开发流程。 1 三步构建 AI 原生应用方法论 AI 原生应用与传统应用的最大区别是交互形态彻底的拟人化&#xff0c;通过…

推荐这两款AI工具,真的很好用

巨日禄 巨日禄是一款由杭州巨日禄科技有限公司开发的AI工具&#xff0c;主要功能是将文本内容转换为视频。该工具通过分析大量的剧本数据和影视作品&#xff0c;为用户提供各种类型的故事情节和角色设置&#xff0c;帮助用户快速找到灵感&#xff0c;减少构思剧本的困难和犹豫。…