oracle连表图解,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、存在歧义的列需要添加表名

eg:

desc emp

desc dept  找到相同的表

SQL> select ename,DEPTNO

2  from emp a,dept b

3  where a.deptno=b.deptno;

select ename,DEPTNO

*

ERROR at line 1:

ORA-00918: column ambiguously defined

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

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

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

select e.ename,m.ename

from emp e,emp m

where e.mgr=m.empno;

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

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

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

select ename,grade,sal,losal,hisal

from emp,salgrade

where sal between losal and hisal;

四、外连接

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

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

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

eg:

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

select ename,loc

from emp,dept

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

五、笛卡尔乘积

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值