SQL——多表连接查询

news2024/10/1 23:48:00

若一个查询同时涉及两个或两个以上的表, 则称之为连接查询(在FROM子句中体现)。 参与连接的表可有多个,但连接操作在两个表之间进行,即两两连接。


连接查询包括:

  • 内连接
    • 等值连接:用“=”比较被连接列的列值
    • 非等值连接:用“>、>=、<、<=、<>”号进行比较运算
    • 自连接:特殊的内连接,一张表看成两张表,自己连接自己,必须给表取别名
  • 外连接
    • 左外
    • 右外
    • 前外
  • 交叉连接       

1 内连接

执行连接操作的过程:

先取表1中的第1个元组,然后从头开始扫描表2逐一查找满足连接条件的元组;

找到后就将表1中的第1个元组与该元组拼接起来,形成结果表中的一个元组。

表2全部查找完毕后,再取表1中的第2个元组,然后再从头开始扫描表2, …

重复这个过程,直到表1中的全部元组都处理完毕为止。

select ...
    from tablename [inner] join 被连接表
    on 连接条件
    ......

——举例(引用已有数据库:bjpowernode.sql)

dept:部门表emp:员工表salgrade :工资等级表

deptno:部门编号

empno:员工编号

grade:等级
dname:部门名称ename:员工名字losal:最低薪资
loc:部门位置job:工作岗位hisal:最高薪资
mgr:上级领导编号
hiredate:入职时间
sal:月薪
comm:补助/津贴
deptno:部门编号

1.1 等值连接

查询每个员工的部门名称,显示员工名和部门名。

select ename,dname
from emp e join dept d
on e.deptno=d.deptno;

1.2 非等值连接 

查询每个员工的工资等级,显示员工名、工资、工资等级。

select ename,sal,grade
from emp e join salgrade s
on e.sal between s.losal and s.hisal;

1.3 自连接 

特殊的内连接——相互连接的表物理上为同一张表。

必须为两个表取别名,使之在逻辑上成两个表(一个是查询结果表,一个查询条件表)。 注:为表指定别名时,在查询语句中其它地方, 所有用到表名处均要用别名,不能再用原表名。  

<表名>    [AS]   <表别名>  (注意与列别名的区别,group by 后不能用列别名)

查询某个员工的上级领导,显示员工名和对应的领导名。

注:员工的领导编号=领导的员工编号

select a.ename as '员工名',b.ename as '领导名'
from emp a inner join emp b
on a.mgr=b.empno;

 2 外连接

只限制一张表中数据必须满足连接条件, 而另一张表中数据可不满足连接条件。   

外连接与普通连接的区别: 普通连接操作只输出满足连接条件的元组

连接操作以指定表为连接主体,将主体表不满足连接条件的元组一并输出

左外连接:列出左边关系中所有的元组  

右外连接:列出右边关系中所有的元组

# 1.ANSI方式的外连接的语法格式为:
FROM  表1  LEFT | RIGHT |FULL [OUTER]  
    JOIN  表2  ON  <连接条件> 

# 2.theta方式的外连接的语法格式为:
# 左外连接(输出表1中所有内容):
   FROM  表1, 表2  WHERE [表1.]列名(+) = [表2.]列名
# 右外连接(输出表2中所有内容):
   FROM  表1, 表2  WHERE [表1.]列名= [表2.]列名(+) 

2.1 左外连接 

查询每个员工的上级领导。

注:主要查询左边的员工表

select a.ename as '员工', b.ename '领导'
from emp a left join emp b
on a.mgr=b.empno;

2.1 右外连接 

查询每个员工的上级领导。

注:主要查询右边的领导表

select a.ename as '员工', b.ename '领导'
from emp a right join emp b
on a.mgr=b.empno;

 查询哪个部门没有员工。

注:主要的表是部门表,用right 使用where e.empno is null

select d.*
from emp e right join dept d
on e.deptno=d.deptno
where e.empno is null;

3 三张表连接 

查询每个员工的部门名称和工资等级。

注:使用emp表dept表先进行连接,再将emp表和salgrade表连接

select 
    e.ename,d.dname,s.grade
from 
    emp e 
join 
    dept d 
on 
    e.deptno=d.deptno
join 
    salgrade s 
on 
    e.sal between s.losal and s.hisal; 

 查询每个员工的部门名称、工资等级和上级领导。

注:不能在第一个join进行左外连接

select e.ename '员工',d.dname,s.grade,e1.ename '领导'
from
    emp e
join
    dept d
on
    e.deptno=d.deptno
join
    salgrade s
on
    e.sal between s.losal and s.hisal
left join
    emp e1
on
    e.mgr = e1.empno;

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

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

相关文章

场景提效:多维表格重塑项目管理流程

此模板适用场景&#xff1a;多任务多团队之间的项目管理 预计实现效果&#xff1a;一张万能表格汇总所有信息&#xff0c;并可以按多视图进行或查看&#xff0c;根据待办项自动定期提醒成员同步进度。 效果对比 需求旧方式新方式统一汇总管理信息全篇文字罗列&#xff0c;呈…

【Linux】线程

1.理解地址空间和页表 1.地址空间是进程能够看到的资源窗口 2.页表决定进程真正拥有的资源情况 3.合理的对地址空间和页表进行资源划分就可以对一个进程的所有资源进行划分&#xff1a;过地址空间分为栈区、堆区…通过页表映射到不同的物理内存。 在32位平台下&#xff0c;…

Mysql学习(十一) -- 常见问题处理

1. MySQL数据库cpu飙升的话你会如何分析 重点是定位问题。 使用top观察mysqld的cpu利用率 切换到常用的数据库使用show full processlist;查看会话观察是哪些sql消耗了资源&#xff0c;其中重点观察state指标定位到具体sql pidstat 定位到线程在PERFORMANCE_SCHEMA.THREADS中…

Nevercenter CameraBag Pro照片滤镜软件 v2023.2.0

Nevercenter CameraBag Pro是一款照片滤镜工具&#xff0c;它可以让您轻松地添加各种效果和样式到您的照片中。该软件可以模拟不同类型的相机、胶片和滤镜&#xff0c;让您的照片呈现出具有艺术感的效果。 CameraBag Pro提供了多达200种不同的滤镜和效果&#xff0c;包括黑白、…

自然机器人最新发布:智能流程助手,与GPT深度融合

ChatGPT自2022年11月上线后就受到现象级地广泛关注&#xff0c;5天时间用户就已经突破百万&#xff0c;仅2个月时间月活用户就突破1亿&#xff0c;成为史上增速最快的消费级应用&#xff0c;远超TikTok、Facebook、Google等全球应用。它展现了类似人类的语言理解和对话交互能力…

java+Servlet家庭个人理财财务系统

目录 1 引言 1 1.1 选题背景 1 1.2 国内外研究现状 1 1.3 课题研究意义 1 1.4 设计目标 2 2 系统关键技术研究 3 2.1 JSP技术简介 3 2.2 Servlet技术简介 4 2.3 My Eclipse简介 7 2.4 系统运行平台 8 3 系统需求分析 9 3.1 总体需求 9 3.2…

【在Github上寻找安装ROS软件包】

【在Github上寻找安装ROS软件包】 1. Github网站搜索2. 工作空间3. WPR系列机器人仿真工具3.1 系统版本3.2 复制https git下载链接3.3 安装依赖项:3.4 编译工作空间3.5 载入工作空间的环境配置3.6 运行编译的ros程序3.6 运行rqt控制的ros程序3.7 提前初始化source文件 项目地址…

C语言学习(四)

char类型数组 字符串&#xff0c;由一个或多个字符组成的序列就做字符串。双引号不是字符串的一部分&#xff0c;只是告诉双引号里的内容是字符串&#xff0c;C语言中没有专门储存字符串的变量类型&#xff0c;字符串都被存储在char类型的数组中。数组由连续的储存单元组成&…

一文搞懂Redis事务~

先说结论&#xff1a; Redis 的事务模式具备如下特点&#xff1a; 保证隔离性&#xff1b;无法保证持久性&#xff1b;具备了一定的原子性&#xff0c;但不支持回滚&#xff1b;一致性的概念有分歧&#xff0c;假设在一致性的核心是约束的语意下&#xff0c;Redis 的事务可以…

Visual Studio 2019 的快捷键和视图布局使用

文章目录 常见快捷键视图布局 常见快捷键 Ctrl Shift / : 将选中的多行注释&#xff0c;或光标所在行 的单行注释。取消注释 这是此快捷键。 CtrlShift Enter : 重启一行&#xff0c;是从当前行的下面&#xff0c;重启一行。 Ctrl Enter : 重启一行&#xff0c;是从当前行的…

javascript中this指向问题

JavaScript中this指向问题 1、this指向window的情况 对于非箭头函数情况下&#xff0c;谁调用就指向谁,如果函数在全局作用域下调用,里面的this就是window。 在全局作用域下&#xff0c;this window function sum() {console.log(this); }sum(); // windowconsole.log(this…

中电金信:生成式AI热潮下,文本智能走向何方?

突破通用人工智能场景&#xff0c;生成式AI正在向全行业应用进攻。 一个脑筋急转弯&#xff0c;几个月前ChatGPT是这样回答的&#xff1a; 然而&#xff0c;仅仅几个月的迭代&#xff0c;它的回答却让人出乎意料。 看似调侃的对比背后实则是无数次模型训练的支撑。基于数据的激…

[Gitops--3]项目代码发布案例Argocd+Gitlab-Runner

项目代码发布案例ArgocdGitlab-Runner 1. 项目文件 demo项目放在gitee上需要自取 git clone https://gitee.com/qqmiller/godemo.git1.1 项目代码 apidemo.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {r : gin.Defau…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术应用

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

Bugku——应急加固1

来打一下bugku的应急加固靶场&#xff0c;靶场链接&#xff1a;https://ctf.bugku.com/ctfplus/detail/id/2.html 启动环境 1、JS劫持域名 直接访问ip地址&#xff0c;发现是xxx学院二手交易市场&#xff0c;随后被劫持跳转到了一个博客页面。 博客地址就是第一个flag&…

记录踩的坑:python gdal 重采样+坐标系转换

源数据&#xff1a;1/0 二值数据&#xff0c;30m 分辨率&#xff0c;WGS_1984_UTM_Zone_53N 坐标系&#xff0c;东北区域。 目标&#xff1a;将源数据制成与 MODIS tile 的坐标系&#xff08;Sinusoidal&#xff09;、分辨率&#xff08;463.3127165m&#xff09;都一致的tif。…

padans关于数据处理的杂谈

情况&#xff1a;业务数据基本字段会有如下&#xff1a; Index([时间, 地区, 产品, 字段, 数值], dtypeobject)这样就会引发一个经典“三角不可能定理”&#xff0c;如何同时简约展现分时序、分产品、分字段数据。&#xff09;一般来说&#xff0c; 1、时序为作为单独的分类&…

10KV高压开关柜怎么进行无线测温

摘要&#xff1a;文章提出了一种用于小车式开关柜的无线测温系统&#xff0c;包括设于小车动触头套管上的温度传感器、环绕设于小车动触头上的电流传感器&#xff0c;温度传感器及电流传感器均分别连接有数据接收处理器&#xff0c;数据接收处理器电连接有设于小车式开关柜上的…

实例分享| anyRTC 部署南京某区城市运行“一网统管”综合调度系统

近年来国家城运中心&#xff0c;加大了对城运信息化系统的建设的投入&#xff0c;通过对城运的信息化建设&#xff0c;提升城市服务能力和现代化管理水平、进一步增强城市竞争力、让信息化切实做到为人民服务的根本能力。 南京市首先提出城市运行”一网统管“的计划&#xff0…

R语言地理空间分析、可视化及模型预测

随着地理信息系统&#xff08;GIS&#xff09;和大尺度研究的发展&#xff0c;空间数据的管理、统计与制图变得越来越重要。R语言在数据分析、挖掘和可视化中发挥着重要的作用&#xff0c;其中在空间分析方面扮演着重要角色&#xff0c;与空间相关的包的数量也达到130多个。在本…