Oracle-表连接

表连接的类型:等值连接、自连接、不等值连接、(左右)外连接


一、等值连接:通过两个表具有相同意义的列,可以建立相等连接条件。

============================================================

1、只有连接列上在两个表中都出现且满足连接条件的行才会出现在查询结果中。

eg:

create table emp_1 as select * from emp;

create table dept_1 as select * from dept;

insert into emp_1(empno,deptno) values (1231,88);

insert into dept_1(deptno,dname) values (77,'ss');

commit;


2、存在歧义的列需要添加表名

desc emp

desc dept 找到相同的表

sql> select ename,DEPTNO

2 from emp a,dept b

3 where a.deptno=b.deptno;

select ename,'Microsoft YaHei';"> *

ERROR at line 1:

ORA-00918: column ambiguously defined


二、自连接:等同于等值连接,只不过是把一张表当成两张表

============================================================

如:需要查询每个雇员的管理者是什么名字?

select e.ename,m.ename

from emp e,emp m

where e.mgr=m.empno;


三、不等值连接:两个表中的相关的两列进行不等连接,比较符号一般为>,<,...,BETWEEN.. AND..

eg:查询出每一个员工的工资等级

from emp,salgrade

where sal between losal and hisal;


四、外连接

左外连接:左条件(+) = 右条件,除了显示满足连接条件的行之外,还显示右条件所在的表中无法匹配连接条件的信息

右外连接:左条件 = 右条件(+),除了显示满足连接条件的行之外,还显示左条件所在的表中无法匹配连接条件的信息

eg:

其中dept表中,有一行40号部门根本没办法显示,因为emp表中没有任何一行数据能与之匹配,如:

where emp.deptno(+)=dept.deptno;


五、笛卡尔乘积

当两个表(多张表)相关联但是他们又没有有效的连接条件,那么这个时候就会出现一个笛卡尔乘积

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...