[오라클] 조인에 대한 이해 - 1
JOIN(조인)에 대한 이해 - 1
1). EQUI JOIN : 테이블(뷰, 인라인뷰)과 테이블(뷰, 인라인뷰) 사이에 콤마(,)를 찍어서 조인.
ex)
select *
from employees e, departments d;
-- 카타시안 프로덕트(Catersian product)(모든 경우의 수)
집합 A={1,2,3} B={a,b} 있다면
집합 a의 원소와 집합 b의 원소를 매핑시켜라
A⊙B = {1,a}{2,a}{3,a},{1,b}{2,b}{3,b} = 데카르트 곱이라 부름 3*2 = 6의 경우의 수가 나옴
select count(*) from employees; --> 107
select count(*) from departments; --> 27
select count(*) from employees e, departments d; -->2889 라는 결과가 나옴.
같은것끼리만 출력해라로 바꾸자
where e.department_id = d.department_id;
select *
from employees e, departments d
where e.department_id = d.department_id;
-- 원래명수는 107명인데 106명으로 출력
-- EQUAL JOIN 이므로 null 값이 킴벌리가 나오질 않는다.
select *
from employees e, departments d
where e.department_id = d.department_id(+);
--> (+)가 없는 부분을 모두 출력하고 매핑시켜라가 된다.
--> OUTER JOIN
----------------------------------
---------------------
select *
from employees e, departments d
where e.department_id *= d.department_id;
--> ms사에서는 조인의 할때의 널값을 구할때 이렇게 쓴다.
오라클에서는 쓸수없음
--(표준문법이 아니기때문에)
select *
from employees e, departments d
where e.department_id(+) = d.department_id;
-- (+)없는쪽을 모두 출력하고 매핑시켜라
/* ms쪽에서는 *이 붙은쪽을 다 보이고 매핑시켜라 이다.
select *
from employees e, departments d
where e.department_id =* d.department_id;
*/
(+) 방식에서는 full outer join은 불가능하다.
select *
from employees e, departments d
where e.department_id(+) = d.department_id(+); --오류
'공감'버튼 및 '좋아요'는 글쓴이에게 큰 힘이 됩니다!
'IT > Oracle' 카테고리의 다른 글
[오라클] 사용자 생성 및 권한(ROLE)에 대한 이해 (0) | 2018.03.09 |
---|---|
[오라클] 조인에 대한 이해 - 2 (0) | 2018.01.17 |
[오라클] 테이블 스페이스(TABLESPACE)의 이해 (0) | 2018.01.12 |
[오라클] 계층형 쿼리의 정리 (0) | 2018.01.11 |
[오라클] 자주쓰는 분석 함수 정리 (0) | 2018.01.10 |