网站首页 > 技术文章 正文
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-11-09 分享SQL语句书写规范(分享sql语句书写规范是什么)
- 2024-11-09 香港DM德馬大中華非遺共創集團/甲骨文“异”YI字写法和解释
- 2024-11-09 mysql总结(中)(mysql详细介绍)
- 2024-11-09 oracle 函数decode用法(oracle的decode方法)
- 2024-11-09 Oracle 存储过程、包、包体如何创建?
- 2024-11-09 Oracle分析函数还是要知道滴(oracle 分析函数)
- 2024-11-09 香港DM德馬大中華非遺共創集團/ 甲骨文“乃”NAI字写法和解释
- 2024-11-09 SQL查询进阶案例演示(sql查询教程)
- 2024-11-09 oracle创建用户名和表空间,并赋值权限
- 2024-11-09 第1章 Oracle 第一天(oracle 今年第一天)
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)