SQL-多表关联查询详解

article/2025/10/16 0:22:44

为了在工作中能更顺利的使用多表关联查询,今天这篇博客就写这个内容了。
在讲解多表关联查询之前,先生成测试表。
登录scott用户,运行以下语句生成测试表。

create table ex1 as select * from emp;
create table ex2 as select * from dept;
insert into ex1(empno,ename,job) values(8888,'EXBONG','EXWORD');
insert into ex1(empno,ename,job) values(9999,'EXZHANG','EXWORD');
insert into ex2(deptno,dname,loc) values(50,'ABONG','BEIJING');

现在看下测试表的内容:
16行数据
在这里插入图片描述
由上图可以看出,ex1表有16行数据,ex2表有5行数据。

多表关联查询

表别名

  • 给表起一个短一点的名字
  • 在多表关联查询时,如果多个表之间存在同名的列,则必须使用表别名来限定列的使用。
  • from子句中给表起别名,现起现用。
  • 由于from子句最先执行,故一旦在from子句中为表指定了别名,则必须在剩下的子句中都使用表别名(不同名的列可以不用表别名限定,但最好用),不允许再使用原来的名字。

1. 等值连接

  • 等值连接的列数=左表列数+右表列数
  • 不要求两个表具有相同的列,只看值是否相等
select e.empno,e.ename,e.deptno,d.deptno,d.dname from ex1 e,ex2 d where e.deptno=d.deptno;

在这里插入图片描述
左表和右表满足where子句的有14行,故等值连接的查询结果为14行。

2. 内连接

  • 内连接的结果均满足on子句的连接条件。
select e.empno,e.ename,e.deptno,d.deptno,d.dname from ex1 e inner join ex2 d on e.deptno=d.deptno;

在这里插入图片描述
ex1有16行数据,ex2有5行数据,满足连接条件的只有14行数据,故内连接的结果只有14行数据。

3. 外连接

左外连接

  • 左连接的结果不仅包含满足连接条件的数据行,还包括左表的不满足连接条件的数据行。
select e.empno,e.ename,e.deptno,d.deptno,d.dname from ex1 e left join ex2 d on e.deptno=d.deptno;

在这里插入图片描述
满足连接条件的有14行,左表中不满足连接条件的有2行,故左连接的查询结果应有16行。

右外连接

  • 右连接的结果不仅包含满足连接条件的数据行,还包括右表的不满足连接条件的数据行。
select e.empno,e.ename,e.deptno,d.deptno,d.dname from ex1 e right join ex2 d on e.deptno=d.deptno;

在这里插入图片描述
满足连接条件的有14行,右表中有2行不满足连接条件,故右连接的查询结果应有16行。

完全外连接

  • 完全外连接的结果不仅包含满足连接条件的数据行,还包括左表和右表中不满足连接条件的数据行。
select e.empno,e.ename,e.deptno,d.deptno,d.dname from ex1 e full join ex2 d on e.deptno=d.deptno;

在这里插入图片描述
满足连接条件的有14行,左表和右表中分别有2行不满足连接条件,故完全外连接的查询结果应该有18行。

4. 自然连接

  • 内连接、外连接的列数=左表列数+右表列数
  • 内连接、外连接可以使用别名
  • 自然连接的列数=左表列数+右表列数-左表和右表中名字相同的列数(去除重复列)
  • 自然连接不能使用别名,不需要on子句
  • 自然连接要求连接的两个表必须要有相同的列名
select * from ex1 natural join ex2;

在这里插入图片描述
左表和右表中名字相同的列为deptno,故以该列进行连接。满足连接条件的行数为14行,故自然连接的查询结果为14行。

5. 自连接

  • 若一个表的某两列存在上下级关系,可以通过自连接获取。
select e1.empno,e1.ename,e1.mgr,e2.ename from ex1 e1 inner join ex1 e2 on e1.mgr=e2.empno;

在这里插入图片描述
存在上下级关系的行数只有13行,故自连接的查询结果为13行数据。

6. 交叉连接(笛卡尔连接)

  • 不需要任何连接条件的连接
  • 不需要on子句
select * from ex1 e cross join ex2 d;

在这里插入图片描述
左表有16行数据,右表有5行数据,任意连接即有16*5=80行数据。


http://chatgpt.dhexx.cn/article/WCucFasw.shtml

相关文章

Mysql如何对两张表的相同字段,同时查询两张数据表

前言 假设现在有两张数据表 表1如下: 表2如下: 表1和表2同时都再mysql的情况下,只有他们的uuid是一样的,其他字段信息不同,现在需要用sql语句根据uuid,同时将符合要求的数据查询出来,怎么做呢&…

SQL- join多表关联

一、SQL 连接(JOIN) 1、笛卡尔积 (1)当多张表进行连接查询,没有任何条件限制的时候,最终查询结果条数,是多张表条数的乘积 如A表15条(行)数据,B表20条(行)…

SQL语言多表关联查询

新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。&…

[转载]静息态fMRI、DTI、VBM

[转载]静息态fMRI、DTI、VBM (2014-06-19 19:00:15) 转载▼ 标签: 转载 分类: fMRI-EEG 原文地址:静息态fMRI、DTI、VBM作者:426l 一、 简介 1、静息态fMRI数据处理学习内容 BOLD-fMRI技术自1990年发明至今,已经成…

用FSL进行VBM统计分析

用FSL进行VBM统计分析 总体步骤概览1.准备数据1.1 T1数据格式1.2 Template_list查看数据 2.剥头皮:fslvbm_1_bet3.数据分割生成模板:fslvbm_2_template4.后处理(标准化、调制、平滑):fslvbm_3_proc5.统计检验5.2查看结…

[spm操作] VBM分析中,modulation的作用

本帖作为 《用Matlab和SPM批量处理被试的经验总结》 的一部分 目录贴请见 http://home.52brain.com/forum.ph ... 1&extra#pid158525 在VBM分析中,通常都有一个modulation的选项,有些滴友对这个步骤的作用有点不太理解。 我先举一个例子&#xff…

不同的工具包对Voxel-based morphometry (VBM)计算结果的影响

​《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》 前期大量的MRI研究已经表明,精神分裂患者很多脑区的局部灰质体积(regional grey matter volume)出现异常变化,但是这些研究的结果似乎并不一致。而这种结果…

如何提取差异脑区的灰质体积与临床量表算相关?——基于体素的形态学方法(VBM)

基于体素的形态学方法(VBM)是分析大脑解剖学(结构)差异最常用方法之一, 其通过给大脑volume逐体素打标签(分类)的方式来进行组织分割,过程高度自动化,比传统的基于ROI先验假设的分析方式得到的结果,更加具有稳定性和可重复性。VBM可以定量地测量出脑组织中各组织成分的…

VBM后的双样本t检验

上一篇文章写到做完了VBM,做完后因为数据一般都是患者组和HC组,这两个组之间需要进行比较,那么我们就要进行双样本t检验。 这里介绍双样本t检验的做法。 依然使用的是SPM-fMRI。 1.第一步是选择Specify 2nd-level 打开以后我们可以看到这个界…

VBM后的配对t检验以及xjview使用

之前写了VBM后的双样本t检验,再记录一下配对t检验。 配对t检验和双样本t检验的过程基本一致。包括以下三个步骤。 第一步输入两组被试时,应该成对输入,共有几个被试就有几个pair。 但是这里我在做的过程中没有加协变量,不知道会不…

Visual Basic

目录 一,Visual Basic 二,控制台程序 三,可视化程序 1,IDE 2,实例——加法计算器 一,Visual Basic Visual Basic是可视化的Basic,简称VB VB是第一个可视化编程语言。 二,控制…

VBM法MRI图像处理——记第一次使用cat12

1.环境 MATLAB 2015b SPM12 CAT12 2.SPM部分 命令行输入 spm 出现 以及 点击Toolbox 出现 3.CAT部分 点击上图 设置请根据自己需求 多分割了一种surface皮层数据,当做皮层统计分析SBM时需要提取surface皮层指标时会用到。 我本意只是获得灰质、白质的体积…

VBM_DARTEL算法对灰质变化的计算

根据一些文献得知,VBM目前比较新的算法是DARTEL算法,这一算法被集成在SPM里,这里记录一下做法。 VBM是对T1像进行分割得到灰质等。所以要有结构T1加权像数据。 整个流程应该是这样: 1.手动调整前联合(AC) …

基于cat12搞定VBM的ROI分析——vertex水平和ROI水平的双样本T检验

前言 本来上周要更新此篇的,但由于本身有问题没有解决清楚,再加上导师给了数据处理的任务下来了,两下耽搁,就等到现在了。上回说到,做了VBM和SBM的指标提取及双样本T检验的统计分析,那接下来我们还可以做什…

基于cat12和SPM12进行VBMSBM数据分析笔记1——数据预处理

前言 今年是小编步入研究生生活的第一年,研究方向待定,但主要以磁共振成像为主,以后会不断地总结这方面的知识,涉及MRI,数据分析基础方法理论,软件操作教程,文献阅读笔记总结等等,用…

基于cat12和SPM12进行大脑VBM数据分析笔记2——统计分析

小白一顿操作猛如虎——拿下VBM的双样本t检验 前言 培训的deadline到了,小编需要交作业了,所以就在此先把笔记记下来。作业需要提交一个报告,but这个报告我应该如何写呢,培训总结?哎,现在还是不清楚&…

磁共振影像分析之: 基于FSL的VBM分析(1)

磁共振影像分析之: 基于FSL的VBM分析(1) 基本概念 在开始之前, 先给出几个基本概念: 磁共振成像 磁共振成像(Magnetic Resonance Imaging, MRI)是一种基于核磁共振原理和射频波探测组织结构和功能的医学影像技术. 值得一提的是, 磁共振成像技术没有辐射, 对人体没有影响. …

MRI图像处理:VBM原理和步骤

VBM是voxel-based morphometry的缩写, 是对被试之间灰质体素粒度统计分析。VBM可以得到人群中volume和gyrification的不同,对clinical score进行相关性分析,VBM不仅仅可以用于结构数据(T1),还可以用在fmri和…

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

基于体素的形态学方法(voxel-based morphometry, VBM),是分析大脑解剖学(结构)差异最常用方法之一。 其通过给大脑volume逐体素打标签(分类)的方式来进行组织分割(segmentation&…