网站首页 > 技术文章 正文
Oracle连接查询,包含内关联(inner jion )和外关联(outer join),其中外关联又分为左外关联(left outer join)、右外关联(right outer join)和全外关联(full outer join)其中外关联可以使用(+)来表示。
内连接
Oracle内连接:两张表通过某个字段进行内关联,查询结果是通过该字段按关系运算符匹配出的数据行。其中可以包括:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列。
2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值,这些关系运算符包括>、>=、<=、!>、!<、<>。
案例所需表结构:学生信息系统(参考外部链接)。
案例1、查询学生信息表(stuinfo)的学生信息,关联查询该学生的班级信息(class)。代码如下:
select a.stuid, a.stuname, a.classno, b.classno, b.classname, b.monitorid, b.monitorname, b.classaddress from stuinfo a, class b where a.classno = b.classno;
外连接:
外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。
1、left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。
2、right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。
3、full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。
下面案例利用学生信息表(stuinfo)和之前的备份表(stuinfo_2018)做案例解析:
stuinfo表数据:
stuinfo_2018表数据:
案例2、left join(左联接)
代码:
--左外连接(stuinfo表中数据都存在,stuinfo_2018不在stuinfo中存在的学生相关字段为null值) select a.*, b.stuid, b.stuname from stuinfo a left join stuinfo_2018 b on a.stuid = b.stuid; --左外连接(利用(+)在右边)另外一种写法 select a.*, b.stuid, b.stuname from stuinfo a,stuinfo_2018 b where a.stuid=b.stuid(+);
结果如下:
案例3、right join(右连接)
代码:
--右外连接(stuinfo_2018表中数据都存在,stuinfo不在stuinfo_2018存在的学生相关字段为null值) select a.*, b.stuid, b.stuname from stuinfo a right join stuinfo_2018 b on a.stuid = b.stuid; --右外连接(利用(+)在左边)另外一种写法 select a.*, b.stuid, b.stuname from stuinfo a,stuinfo_2018 b where a.stuid(+)=b.stuid;
结果如下:
案例4、full join(全外连接)
代码:
--(全外连接(stuinfo、stuinfo_2018表中数据都存在, --stuinfo不在stuinfo_2018存在的学生相关字段为null值, --stuinfo_2018不在stuinfo存在的学生相关字段为null值) select a.*, b.stuid, b.stuname from stuinfo a full join stuinfo_2018 b on a.stuid = b.stuid;
结果如下:
猜你喜欢
- 2024-10-22 Oracle SQL 查询排序 oracle的排序
- 2024-10-22 Oracle查询语句,你知道几个?(下)
- 2024-10-22 Oracle的基本查询语法 oracle常用查询
- 2024-10-22 工作中你会用几种方式来查看oracle执行计划呢?
- 2024-10-22 oracle虚拟索引如何查询大小? oracle查看虚拟列
- 2024-10-22 Oracle按时间范围查询sql分享 oracle按照时间查询
- 2024-10-22 Oracle 11G,实践操作,SQL分类,去重操作
- 2024-10-22 #干货推荐# Oracle_sql优化 #oracle sql优化一般从那几个方面入手
- 2024-10-22 【Oracle】多表联合查询超时问题排查
- 2024-10-22 oracle的学习历程5——查询 oracle查询技巧
你 发表评论:
欢迎- 633℃几个Oracle空值处理函数 oracle处理null值的函数
- 626℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 608℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 599℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 574℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- oracle 19cOCM认证有哪些内容(oracle认证ocm月薪)
- Oracle新出AI课程认证,转型要持续学习
- oracle 表的查询join顺序,可能会影响查询效率
- Oracle DatabaseAmazon Web Services正式可用,Oracle数据库上云更容易了
- Oracle 19.28 RU 升级最佳实践指南
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 如何主导设计一个亿级高并发系统架构-数据存储架构(三)
- Java 后端开发必看!工厂设计模式轻松拿捏
- ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)
- 新项目终于用上了jdk24(jdk新建项目)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)