© Alexas_Fotos, 출처 Pixabay
Join의 종류
· 개념 : 둘 이상의 테이블을 합쳐서 하나의 큰 테이블로 만드는 방법.
(정규화된 테이블로부터 결합된 형태의 정보를 추출할 필요가 있음.)
Cartesian Product
결합 조건이 옳바르지 않거나 없을 경우 모든 조합을 출력!!
실습1.
SELECT ename, dname FROM emp, dept;
☞ 일반적으로 사용자가 원하는 결과가 아니다!
Simple Join(Equi-Join)
· 컬럼 이름의 모호성을 피하기위해 table이름에 ALIAS 사용
· 일반적으로 PK와 FK간의 = 조건이 붙는 경우가 많음
Syntax
SELECT column1 col1, column2 col2 .......
FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col3
실습2.
SELECT * FROM emp, dept
WHERE emp.deptno = dept.deptno;
Theta Join(Non-Equi Join)
임의의 조건을 Join조건으로 사용!
실습 3.
SELECT e.ename, e.sal, s.grade FROM emp e, salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;
Outer Join
Join 조건을 만족하지 않는(짝이 없는) 튜플의 경우 NULL 값을 포함해서 결과 출력 => 모든 행이 결과 테이블로!!
종류
· Left Outer Join
· Right Outer Join
· Full Outer Join
=> NULL이 올 수 있는 쪽 조건에 (+)를 붙여 표현!
실습4.
SELECT * FROM emp, dept
WHERE emp.deptno(+) = dept.deptno;
Self Join
· 테이블 하나로 자기 자신과 Join(table이 두 개라고 생각하면 쉬움)
· ALIAS를 사용해야함.
실습 5.
SELECT * FROM emp e1, emp e2
WHERE e1.empno = e2.mgr;
FROM 절에서 바로 Join을 명시적으로 정의하기
실습 6.
SELECT * FROM emp NATURAL JOIN DEPT;
실습 7.
SELECT * FROM emp JOIN dept
USING (deptno);
실습 8.
SELECT * FROM emp JOIN dept
ON emp.deptno = dept.deptno;
실습 9.
SELECT * FROM emp RIGHT OUTER JOIN dept
ON (emp.deptno = dept.deptno);
Hierarchical Query
· 트리 형태 구조를 추출하기 위한 쿼리
· START WITH (ROOT 조건), CONNECT BY PRIOR (연결 조건)
SELECT level, ename FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
ORDER BY level;
이상입니다~~
'Learning > SQL' 카테고리의 다른 글
7. SUBQUERY (0) | 2021.07.11 |
---|---|
6. GROUP & AGGREGATION (0) | 2021.07.11 |
4. Single-Row-Funtion (0) | 2021.07.11 |
3. 기본 SELECT (0) | 2021.07.11 |
2. Database 용어정리 (0) | 2021.07.11 |