oracle表内连接和外连接
n 概述
表连接分为内连接和外连接
n 内连接
内连接实际上就是利用where子句对两张表形成的笛卡尔集进行筛选,我们前面学习的查询都是内连接,也是在开发过程中用的最多的连接查询。
基本语法:
select 字段1,字段2,. . . from 表1 inner join 表2 on 条件 . . .
select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; 等同于
select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno;
n 外连接
①左外连接 (如果左侧的表完全显示我们就说是左外连接)
②右外连接 (如果右侧的表完全显示我们就说是右外连接)
③完全外连接 (完全显示两个表,没有匹配的记录置为空)
SQL> create table stu(id number,name varchar2(32));
SQL> create table exam(id number,grade number);
实际应用
显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。
select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id;
上面我们使用的内连接:它的特点是只有两张表同时匹配,才被选择。
①使用左外连接:
select stu.name,stu.id,exam.grade from stu left join exam on stu.id=exam.id;
如果stu(左表)的记录没有和exam任何一条记录匹配,也要被选中。
怎么判断一张表是左边,如果在left join左边,就是左表。
另外一种写法:
select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id(+);
②右连接(显示所有成绩,如果没有名字匹配,显示空)
select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;
③完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)
说明:有外联,指定是右边的表如果没有和左边任何一条记录匹配,也要被选中。
另外还有一种写法:
select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)=exam.id;
把(+)写在左边,就表示右外联。
小结:实际上左外联和右外联是可以互为转换
显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。
(1)select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;
(2)select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)= exam.id;
(3)select stu.name,stu.id,exam.grade from exam left join stu on stu.id=exam.id;
(4)select stu.name,stu.id,exam.grade from stu,exam where exam.id= stu.id(+);
完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)
即:两个表查询,不管有没有匹配,全都显示。
select stu.name,stu.id,exam.grade from stu full outer join exam on stu.id=exam.id;
oracle表内连接和外连接的更多相关文章
- Oracle内连接、外连接、右外连接、全外连接小总结
数据库版本:Oracle 9i 表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 ...
- Oracle 内连接和外连接
内连接用于返回满足连接条件的记录:而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法.语法如 ...
- SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)
SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...
- oracle中的内连接和外连接区别
表t_user1,t_user2,t_user3,各有id,name两列 id name 1 10A 2 20A id name 1 10B 3 30B id name 1 10C 4 40C 连接分 ...
- oracle 内连接、外连接、自然连接、交叉连接练习
oracle 内连接.外连接.自然连接.交叉连接练习 --查询员工信息 select * from emp; --查询部门信息 select * from dept; --需求:查询员工姓名.薪资和所 ...
- 【Oracle】内连接、外连接、(+)的使用
表各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外连接. A.内连接 内连接,即最常见 ...
- mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化
先附上数据. CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) CHARACTER SET utf8 NOT NULL, `ctime` ) NO ...
- 【Oracle学习笔记-4】内连接和外连接的区别
参考链接(非常棒) 摘要 下面主要以两个例子进行说明: 例子1: 表A结构如下: select * from A | 表B结构如下: select * from B 两个表要做连接,就必须有个连接字段 ...
- SQL多表联合查询(交叉连接,内连接,外连接)
连接查询: 交叉连接: 交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据航数乘以第二个表中符合,查询条件的数据行数,例如department ...
随机推荐
- leetcode 843. Guess the Word
我做过的第一个 interactive problem 给一个候选词列表,每次猜测可以猜里面的词,会返回猜中匹配的个数, 可以猜10次, 加上随机化策略之后几乎可以一定通过测试(尽管不是100%) c ...
- 巧用tar命令
tar命令可以对文件进行归档.它最初设计是用来将数据存储在磁带上.tar可以将多个文件和文件夹保存为单个文件,同时还能保留所有的文件属性,如所有者.权限等.由tar创建的文件通常称为Tarball.下 ...
- 「LOJ10104」「一本通 3.6 练习 5」Blockade-Tarjan
首先%%%lydrainbowcat 这个题唔,真是Tarjan好题(?) 不知道为啥也叫BLO,首字母? <题面> 搜索树真真的棒! 仔细看看,知道是Tarjan了,切掉一个点有不通的对 ...
- Spring_boot_pom.xml和启动方式
spring-boot-starter-parent 整合第三方常用框架信息(各种依赖信息) spring-boot-starter-web 是Springboot整合SpringMvc Web ...
- SPSS正交设计的操作
SPSS正交设计的操作 设要做二因素的正交设计,A因素有三个水平,B因素有两个水平.则选择Data-->Orthogonal Design-->generate,弹出的就是正交设计窗口: ...
- Linux & CentOS & RHEL
1.修改centos7的系统编码:https://blog.csdn.net/violet_echo_0908/article/details/58063555 2.windows 环境下使用ultr ...
- Color the ball HDU - 1556 (线段树)
思路:线段树,区间更新 #include<iostream> #include<vector> #include<string> #include<cmath ...
- SEO中HTML标签权重列表
网上流传很久的一份资料<SEO中HTML标签权重>,这里做一份备份. HTML标签权重分值排列 内部链接文字:10分 标题title:10分 域名:7分 H1,H2字号标题:5分 每段首句 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- JSP-response(HttpServletResponse)
1 HttpServletResponse概述 2 Response 运行过程 3 通过抓包工具抓取Http响应 4 响应行 5 设置响应头 set 和add的区别 6 重定向 需要完成分析‘ 6 ...