2023-1모각코

23.05.23 모각코 8회차

정서1002 2023. 5. 27. 15:21

 이번 모각코 8회차 모임에서 나는 <데이터 베이스> 과목의 OUTER JOIN과 재귀 JOIN에 대해 공부했다.

 

OUTER JOIN

    - 조인 조건을 만족하지 않는 투플도 결과에 포함하는 기능이다.

    - 종류

        - LEFT [OUTER] JOIN

            - "R LEFT OUTER JOIN S" 수행시 R 테이블을 driving table로 한다.

            - 즉, R 테이블에서 투플을 먼저 읽은 후, S 테이블에서 조인 대상 투플을 읽어 온다.

            - S 테이블의 조인 칼럼에 같은 값이 없는 경우(읽어올 대상 투플이 없는 경우), S 테이블에 해당하는 투플의 모든 칼럼들을 NULL값으로 채운다.

        - RIGHT [OUTER] JOIN

            - LEFT와 반대 결과, S 테이블을 driving table로 한다.

        - FULL [OUTER] JOIN

            - LEFT 및 RIGHT OUTER JOIN 의 결과의 합집합(UNION).

            - 중복 투플은 삭제하는 UNION 기능

            - MySQL에서는 지원하지 않는다.

    - "~를 전부 포함해라", "전체 OO을 출력해라" 등의 문장은 OUTER JOIN이 아니면 풀 수 없다.

 

SELECT	TEAM_ID, TEAM_NAME, REGION_NAME, TEAM.STADIUM_ID, STADIUM_NAME, SEAT_COUNT
FROM	TEAM LEFT KOIN STADIUM USING (STADIUM_ID)
ORDER	BY TEAM_ID;

 - 왼쪽 (TEAM)의 모든 투플이 다 출력됨

 

 

재귀 조인(Self Join)

    - 순환적 관계(recursive relationship)를 갖는 테이블

        - 한 테이블에 자신의 PK를 참조하는 FK가 같이 존재함 (ex. 사번과 상급자 사번)

    - 동일 테이블 사이의 조인

    - 반드시 테이블 별칭, 혹은 테이블명을 접두사(식별자)로 사용해야 함.

 

    * 예제

        - 직원과 직원의 상급자에 대해, 각각 주민번호와 이름을 출력하시오.

SELECT	emp.Ssn,
		CONCAT(emp.Fname, ', ', emp.Minit, '. ', emp.Lname) AS Employee,
        mgr.Ssn,
        CONCAT(mgr.Fname, ', ', mgr.Minit, '. ', mgr.Lname) AS Manager
FROM	employee emp LEFT JOIN employee mgr ON emp.Super_ssn=mgr.ssn;

    - LEFT JOIN하는 이유: 그래야 employee에 사장도 포함됨

'2023-1모각코' 카테고리의 다른 글

23.05.30 모각코 9회차  (0) 2023.05.31
23.05.16 모각코 7회차  (0) 2023.05.18
23.05.09 모각코 6회차  (0) 2023.05.14
23.05.02 모각코 5회차  (0) 2023.05.04
23.04.04 모각코 4회차  (0) 2023.04.05