join
self Join
select *
from emp e1, emp e2
where e2.empno = 1010
and e1.sal > e2.sal;
JOIN ON으로만 변환 가능
방법 1)
select *
from emp e1 JOIN emp e2
ON e1.sal > e2.sal and e2.empno = 1010;
방법 2)
select *
from emp e1 JOIN emp e2
ON e1.sal > e2.sal
where e2.empno = 1010;
natural join
양쪽 테이블의 같은 이름을 equie join 한다는것이 natural join이다.
Outer Join
select *
from emp e, dept d
where e.deptno (+) = d.deptno;
부족한 쪽에(+) 표시 해주는거다.
-> JOIN ON으로만 변환 가능
select *
from emp e RIGHT OUTER JOIN dept d ON (e.deptno = d.deptno);
ANSI systax
ANSI로 변환 규칙
, => JOIN where => ON
(ansi 조인은 where 문을 안보고 from절만 보고도 어떤 조인인지 알게 해준다.)
- Cross Join : Cartesian product 생성
select *
from emp CROSS JOIN dept;
-> select
from emp, dept;
- Natural Join : 같은 이름의 컬럼 모두를 equi 조인 조건으로 사용하는 문법
select *
from emp NATURAL JOIN dept;
-> select *
from emp e, dept d
where e.deptno = d.deptno;
Natural Join 문제점 : 같은 이름의 컬럼 모두를 equi 조인 조건으로 사용한다는 것
문제점 해결 방법
1 : Join Using(단, Join Using은 equi 조인만 가능)
2 : Join On(equi, non-equi, self, outer 모두 가능)
Join 문장 작성 기본 흐름?
(1) 필요한 재료 집합을 파악해서 from절에 둠
(2) 필요한 prediate를 계속 where절에 추가함
(3) 리턴될 행이 결정되면 select list를 정리함
오늘의 tip
테이블이 아무리 많아도 조인은 그중 2개씩 붙여 가는거다.
오라클 문법은 조인 술어부와 조건 부다 다 섞여 있다.
숫자형은 오른쪽 정렬, 문자형을 왼쪽 정렬
안시 표준으로는 여러가지가 있지만
근데 실제적으로는 거의 join on 밖에 안쓰임~~!!!!!
join using도 InnerJoin만 하는거지 OuterJoin으로 불가능
'Oracle' 카테고리의 다른 글
[Oracle]Oracle 주요함수_1103 (0) | 2022.11.03 |
---|---|
[Oracle]정렬, 데이터 연결_1102 (0) | 2022.11.03 |
[Oracle]Join 기본(1)_1031 (1) | 2022.10.31 |
[Oracle]계정 생성,접속/포워드 엔지니어링__개발공부 80일차 (0) | 2022.06.27 |
[Oracle] UPDATE/DELETE __개발공부 35일차 (0) | 2022.04.10 |