본문 바로가기

DataBase/Oracle SQL

[Oracle] ORACLE JOIN


1.집합연산자

 UNION : 중복을 제거한 합집합

  - A ∪ B = ( A + B ) - ( A ∩ B )

  - 중복제거를 위해 정렬 작업을 수행한다.

 

 UNION ALL : 중복을 허용한 합집합

  - A ∪ B = ( A + B )

  - 정렬작업이 없기 때문에 UNION보다 빠르다. 

 

◆ INTERSECT : 교집합

  - A ∩ B

 ◆ MINUS : 차집합

  - A ∩ B



 II. 조인

 ◆ Cartesian Product

  - 조건절에 조건이 기술되지 않은 JOIN

  - 테이블단위로 나올 수 있는 Record 수의 곱으로 결과가 생성된다.

 

◆ Equi Join

  - 조건절에 조건이 Equal(=) 연산자로 연결된 JOIN

 

◆ Non-Equi Join

  - 조건절에 조건이 Equal(=)이 아닌 다른 연산자로 연결된 JOIN

 

◆ Outer Join

  - 두개 이상의 테이블 조인시, 한쪽 테이블의 행에 대해 다른 쪽 테이블에 일치하는 행이 없더라도

     다른쪽 테이블의 행을 Null로 하여 행을 Return 하는Join

 



◆ Self Join

  - 같은 테이블을 Alias를 이용하여 하는 Join

 

 


III. Not Exist, Not In, Minus 차이점

 Not Exist

Not In 

 Minus

SELECT   *

FROM      A

WHERE    NOT EXIST

( SELECT   *

  FROM      B

  WHERE    B.key = A.key )

SELECT   *

FROM      A

WHERE    A.key   NOT IN

( SELECT  B.key

  FROM      B )

SELECT  key, col1, col2

FROM      A

MINUS

SELECT  key, col1, col2

FROM      B

 A 테이블을 먼저 Access

  A의 각 row들을 Not Exist로 조사한다.

  즉, B를 Access 하기 전에 A의 전체범위가 먼저 Access된다. 이 때의 서브쿼리는 공급자가 아닌 확인자 역할만 해 줄 수 있  다.

B 테이블을 먼저 Access

 B.key로 A.key에 공급자역할을 하는 서브쿼리로 쓰고싶을 때 주로 사용한다.

 정렬과 중복제거 수행

 


IV. 서브쿼리와 Inline View

 

◆ 서브쿼리 (sub query)

  - Select 한 결과를 조건 비교에 사용하거나 Update, Insert에 사용할 때 사용되는 Query

 

◆ Inline View

  - View를 생성하지 않고 바로 SQL 안에 기술하여 사용하는 방식

 

 


V. Decode와 Case

 ◆ Decode

  - 프로그래밍 언어의 IF문의 역할을 수행하는 오라클 함수

 

◆ Case

  - 오라클 8.1.6 이후 버전부터 사용가능한 함수

  - Decode를 이용해 처리되던 부분들을 보다 간편하게 처리할 수 있다.




오라클 조인 관련하여 자료를 찾아 보던 중 괜찮게 정리된 PPT 파일과 블로그가 있어서 가져왔다.
아래  PPT 파일 참고하여 ORACLE JOIN 에 관한 기본 개념을 잡는 것이 좋다.
(뭐니뭐니 해도 기본은 책으로 잡는 것이 젤 좋은 방법입니다.)


출처 : wings님블로그

'DataBase > Oracle SQL' 카테고리의 다른 글

[Oracle] import/ export  (0) 2010.12.06
[Oracle] NLS_LANG CharacterSet 변경  (1) 2010.12.06
[SQL] 제약조건 삭제  (0) 2010.08.24
[ORACLE] LONG ROW TYPE  (0) 2010.04.21
[ORACLE] CASE WHEN ~ THEN ~ ELSE END  (3) 2010.04.20