본문 바로가기

기타/SQLD 자격증

11. SQL 조인과 계층형 조회 (SQLD 자격증 공부)

조인(Join)

1. EQUI(등가) JOIN (교집합)

  • 가장 기본으로 교집합을 만드는 것
  • 공통 칼럼을 이용하여 조인한다.
  • '='를 사용해서 두개의 테이블 연결
SELECT *
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO 		-- '='를 사용해서 조인
  • 조건을 추가하거나 정렬할 수 있다.

2. INNER JOIN

  • ON문을 활용해 테이블을 조인
SELECT *
FROM EMP E
INNER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO

3. INTERSECT 연산

  • 두개의 테이블에서 교집합을 조회
  • 공통된 값을 조회
SELECT DEPTNO FROM EMP
INTERSECT		-- EMP와 DEPT 테이블에서 교집합을 조회해주는 연산
SELECT DEPTNO FROM DEPT

4. Non-EQUI(비등가) JOIN

  • '='를 사용하지 않고 '>', '<', '>=', '<='등을 사용
  • 정확하게 일치하지 않는 것을 조인

5. OUTER JOIN

  • 두개의 테이블간 공통된 내용을 조회하고 한쪽 테이블에 있는 데이터도 포함시켜 조회
  • FULL OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN이 각각 존재
  • 왼쪽 테이블에 있는 행도 포함하면 LEFT OUTER JOIN, 오른쪽 테이블에 있는 행도 포함하면 RIGHT OUTER
  • ORACLE DB에서는 OUTER JOIN을 할때 '(+)'를 사용할 수 있다
SELECT * 
FROM EMP E, DEPT D
WHERE E.DEPTNO (+)= D.DEPTNO

6. CROSS JOIN

  • 조인 조건구 없이 2개의 테이블을 하나로 조인
  • 조인구가 없기에 카테시안 곱이 발생

▷ 합집합과 차집합 구현

1. UNION 

  • 두개의 테이블을 하나로 만드는 연산
  • 정렬을 발생
  • 중복된 데이터를 제거

2. UNION ALL

  • 중복을 제거하거나 정렬을 유발하지 않는다

3. MINUS

  • 두개의 테이블에서 차집합을 조회
  • MS-SQL에서는 EXCEPT로 사용

계층형 조회(Connect by)

  • 트리 형태의 구조로 위에서 아래로 탐색하면서 조회
  • START WITH구는 시작 조건을 의미, CONNECT BY PRIOR은 조인 조건
키워드 내용
LEVEL 깊이를 의미, 최상위 레벨은 1
CONNECT_BY_ROOT 최상위 값을 표시
CONNECT_BY_ISLEAF 최하위 값을 표시
SYS_CONNECT_BY_PATH 전개 경로를 표시
NOCYCLE 발생지점까지만 전개
CONNECT_BY_ISCYCLE 순환구조 발생 지점을 표시