a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 51|回复: 0

[其他] Oracle认证:Oracle中表的4种连接方式

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
表的毗连是指在一个SQL语句中经由过程表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的毗连首要可分四种,分袂为相等毗连,外毗连,不等毗连和自毗连,本文将首要从以下几个典型的例祖菀攀析Oracle表的四种分歧毗连体例:
: q0 J3 N. k# p4 C. s% l$ ^! G: u* Q  1. 相等毗连
& I3 I9 D4 e4 j7 R  经由过程两个表具有不异意义的列,可以成立相等毗连前提。+ [9 l* h; ~6 @. |- h! U+ D; t
  只有毗连列上在两个表中都呈现且值相等的行才会呈此刻发芽结不美观中。9 f% E( q7 j7 g4 {7 I' t0 r
  例 发芽员工信息以及对应的员工地址的部门信息;
5 Z/ c3 n* S, y- T6 W  SELECT * FROM EMP,DEPT;
+ O# |* O% t( p  T) |; y  SELECT * FROM EMP,DEPT
9 ?4 {' m7 u' H9 ~# G. P: G  g( F  WHERE EMP.DEPTNO = DEPT.DEPTNO;" R8 S9 N8 V" y% G' Y6 A
  REM 显示工资跨越2000的员工信息以及对应的员工的部门名称。4 a7 l; D2 J7 z* r
  2. 外毗连
6 s; k( R  v7 `2 I3 Z  对于外毗连,Oracle中可以使用“(+)”来暗示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等毗连前提的信息之外,还显示无法匹配相等毗连前提的某个表的信息。
6 y: c4 Y. t6 k  外毗连采用(+)来识别。6 j- w! {7 }" A. M# t
  A) 左前提(+) = 右前提;
( F. y* v8 c. _1 `+ |& G  代表除了显示匹配相等毗连前提的信息之外,还显示右前提地址的表中无法匹配相等毗连前提的信息。
1 I4 O4 X, f) ?8 K  此时也称为“右外毗连”。另一种暗示体例是:
; C* b: y0 q9 x' {  SELECT 。.. FROM 表1 RIGHT OUTER JOIN 表2 ON 毗连前提
3 h0 Q" L" M: ]* n1 N. T0 J  B) 左前提 = 右前提(+);5 c! W- g' {* l& W. Z8 m6 ?  l, ~
  代表除了显示匹配相等毗连前提的信息之外,还显示左前提地址的表中无法匹配相等毗连前提的信息。+ S; q8 l9 t( J5 P
  此时也称为“左外毗连”。
6 u+ [$ t+ r, b: [  SELECT 。.. FROM 表1 LEFT OUTER JOIN 表2 ON 毗连前提
1 T4 }( Y8 H, k- x  例 显示员工信息以及所对应的部门信息, `6 v$ o2 J" g5 ^# U
  --无法显示没有部门的员工信息1 O" m2 G% k, B) z9 b
  --无法显示没有员工的部门信息% s& x( c6 D/ @% i- a! d( P
  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
2 q3 v) c! ^0 z6 k% P2 `  --直接做相等毗连:
& ~' _1 S+ f9 D3 S3 ]  SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
, Z3 J9 E' N$ w# u  [  REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息
- c2 o, o9 R+ W4 o9 G; n  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;/ h% Z( O( ~, i2 `* h+ O, ^
  SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
: `& m+ e/ V, \1 ~7 L  z8 e  REM 显示员工信息以及所对应的部门信息,显示没有部门的员工信息( ]* k2 p, ]  b8 X6 A
  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);. Q: B3 O" |$ j3 y" x. A+ X5 U2 d  M
  SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
* F+ J0 S" i. s  a8 ?  3. 不等毗连! D3 }0 w5 d# g* ?! z  @0 M. U: s
  两个表中的相关的两列进行不等毗连,斗劲符号一般为》,《,。..,BETWEEN.。 AND.。
3 g: D( z2 _3 D6 [  REM SALGRADE
2 o0 K# H4 {  `& p  --DESC SALGRADE;
5 i& ?3 j/ J& ]2 I4 q/ i3 t  --SELECT * FROM SALGRADE;
  C9 g7 ~. @  i3 h% o" B  REM 显示员工的编号,姓名,工资,以及工资所对应的级别。* M1 x* M$ l$ c) `' z; \
  SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP5 o7 `7 b: l* ?
  WHERE EMP.SAL BETWEEN LOSAL AND HISAL;( l) m: ]' G' T: W5 q# c
  REM 显示雇员的编号,姓名,工资,工资级别,地址部门的名称;
4 }' \' A1 ^5 M/ Y% M! r  SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE
& @% o2 W& J  X; F/ i3 x$ |" p  WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;
1 g) `8 |6 U* L; N* l1 ?6 f1 i/ J- P  4. 自毗连( |/ _  f8 `9 H& c
  自毗连是数据库中经常要用的毗连体例,使用自毗连可以将自身表的一个镜像算作另一个表来看待,从而能够获得一些非凡的数据。下面介绍一下自毗连的体例:9 J/ z0 C: e4 e+ E* f  j5 s
  将原表复制一份作为另一个表,两表做笛卡儿相等毗连。/ A+ _9 p( p8 U: f: b, z
  例 显示雇员的编号,名称,以及该雇员的司理名称
' G1 ^: H  O( Y' u/ w  SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER
7 j$ Z; _; z* O+ \7 G2 k: s- E  WHERE WORKER.MGR = MANAGER.EMPNO;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 03:24 , Processed in 0.178524 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表