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 |