网站首页 > 技术文章 正文
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查询技巧
你 发表评论:
欢迎- 490℃几个Oracle空值处理函数 oracle处理null值的函数
- 485℃Oracle分析函数之Lag和Lead()使用
- 483℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 470℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 464℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 459℃【数据统计分析】详解Oracle分组函数之CUBE
- 442℃Oracle有哪些常见的函数? oracle中常用的函数
- 437℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)