a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 82|回复: 1

[综合] Oracle中表的四种连接方式

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
表的毗连是指在一个SQL语句中经由过程表与表之间的关连,年夜一个或多个表中检索相关的数据,年夜体上表与表之间的毗连首要可分四种,分袂为相等毗连,外毗连,不等毗连和自毗连,本文将首要年夜以下几个典型的例祖菀攀析Oracle表的四种分歧毗连体例:5 y: G% A+ o  c, V3 c3 Q
  1. 相等毗连
0 [3 |' k2 _! y; n  经由过程两个表具有不异意义的列,可以成立相等毗连前提。
% U3 ^3 _! Y3 T0 T1 W/ f) |: y  只有毗连列上在两个表中都呈现且值相等的行才会呈此刻发芽结不美观中。' T& S" k' S5 M$ i) k7 A
  例 发芽员工信息以及对应的员工地址的部门信息;
& j9 [2 c+ v  c: _0 R, w2 ^2 ^
! q3 B) d% r- Q8 G6 [1 C& r  SELECT * FROM EMP,DEPT; - u0 \/ r5 r- A% r
  SELECT * FROM EMP,DEPT - S9 f5 G1 E2 r( r8 u
  WHERE EMP.DEPTNO = DEPT.DEPTNO;3 h+ ]( z* ^6 n0 k1 u
  REM 显示工资跨越2000的员工信息以及对应的员工的部门名称。
* L0 y% V6 B, R* p  2. 外毗连
6 v+ k  l/ s5 m/ v  对于外毗连,Oracle中可以使用“(+)”来暗示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等毗连前提的信息之外,还显示无法匹配相等毗连前提的某个表的信息。( V* x2 X5 W) F2 ^* ]
  外毗连采用(+)来识别。' G( a8 ]/ T7 I/ S1 [
  A) 左前提(+) = 右前提;( l: q& K) ^3 J
  代表除了显示匹配相等毗连前提的信息之外,还显示右前提地址的表中无法匹配相等毗连前提的信息。- _- D4 e9 O0 @8 i! [5 h
  此时也称为"右外毗连".另一种暗示体例是:
- F% R8 f9 |8 S" N  SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 毗连前提
' p+ @( s: b% x! _% }0 m  B) 左前提 = 右前提(+);
2 ?2 @' t! S4 H  M% x/ s  代表除了显示匹配相等毗连前提的信息之外,还显示左前提地址的表中无法匹配相等毗连前提的信息。
# A2 h- J( b9 ?( X- H  此时也称为"左外毗连".
* C% K5 a, y- M9 Z2 V) ^! b! k! k  c  SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 毗连前提
5 j) J* h3 b7 ?/ I6 w  例 显示员工信息以及所对应的部门信息+ a+ P/ g. |, I4 q/ n
  --无法显示没有部门的员工信息  u% A1 ^0 s/ P) T0 f8 u
  --无法显示没有员工的部门信息& C$ ^' ~, A. d/ G$ _! M. F, G

2 ?  f) u* w8 ?0 U  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;3 W6 c" P# ^$ L" g8 ^" s: X

4 a. H( o$ U1 n! r  --直接做相等毗连:
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle中表的四种连接方式

</p>0 {4 S. ?& x; a! p
  SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;" D7 M+ D* ~9 ]9 Q- a$ P8 y) Q) U+ O
  REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息
* G  U% \1 U7 A+ T2 Q9 x" R
+ N* X: b* m! }7 T  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO; - W9 }/ i' J+ q# O+ a7 Z
  SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
" m: `- i# _+ q5 s/ y- y& e7 q7 P  REM 显示员工信息以及所对应的部门信息,显示没有部门的员工信息7 m% [4 V# K9 ]+ A" Q
' l. X4 c5 i, q
  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);
8 U3 X/ H# y7 j  I" n. D  SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
0 o  A5 k# U& |  3. 不等毗连/ \' q8 r- J- U2 C! `7 D
5 n; U& l0 b+ P* i0 O
  两个表中的相关的两列进行不等毗连,斗劲符号一般为>,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 20:20 , Processed in 0.180260 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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