미래학자
[MySQL] 7장 조인 : JOIN (INNER, LEFT, RIGHT) 본문
조인은 관계형 데이터 베이스에서 일반적으로 많이 사용하며, 충분한 이해 없이 사용하기 쉬운 내용이다.
이번 시간에는 여러 조인의 종류가 그 사용하는 예에 대해서 공부해보자.
- INNER 조인
- LEFT OUTER, RIGHT OUTER, OUTER 조인
- 카티전 조인 (CROSS 조인)
- 셀프 조인
2. LEFT OUTER, RIGHT OUTER 조인
히트 곡이 저장되어 있지 않은 에프터 스쿨, 포미닛의 경우, 곡이 표시 되지 않더라도 보이고 싶을 때는 하나의 테이블 기준으로 합치는 조인을 사용할 수 있다.
위 사진과 같이 일치 하지 않는 값을 가지고 있더라도 표시할 수 있게 된다.
* A LEFT JOIN B 와 B RIGHT JOIN A는 완전히 같은 식이다.
* LEFT OUTER 대신 LEFT, RIGHT OUTER 대신 RIGHT만 입력해도 같은 기능을 수행한다.
LEFT 조인 과 RIGHT 조인을 집합으로 표현하면
MySQL에서는 OUTER JOIN을 지원하지 않지만, 유사한 처리를 할 수 있다. 아래는 OUTER JOIN의 범위다.
어떤 결과가 나올지 예상해보고 직접 해보면 좋겠다.
3. 카티전 조인 ( CROSS JOIN)
집합에서 집합 곱의 개념이다.
A= {a, b, c, d} , B = {1, 2, 3} 일 때
A CROSS JOIN B 는
(a,1), (a, 2), (a,3), (b,1), (b,2), (b,3), (c, 1), (c,2), (c,3), (d, 1), (d, 2), (d,3)
와 같이 결과가 나타난다. 결과의 계수는 n(A) * n(B) = 4 * 3 = 12 이다.
* NATURAL JOIN은 두 테이블에 칼럼명이 같은 것을 기준으로 INNER JOIN을 한다. 그렇기 때문에 JOIN 뒤에 ON을 생략할 수 있다.
4. 셀프 조인
만약 아래와 같은 조직도를 생각해보자. 트리이기 때문에 닭의 부모 노드는 최목사다. 우병우의 부모 노드는 닭이다.
이를 테이블로 만들면
닭의 차일드는 우병우, 김기춘, 안종범이다. (닭과 sunsil은 파트너 관계다)
우리가 하고 싶은 것은 보스 아이디를 통해 보스의 이름을 함께 나타내는 테이블이다. 아래 그림과 같이 만드는 것이 목표다.
'DataBase' 카테고리의 다른 글
[MySQL] 9장 대용량 데이터 샘플 (SAMPLE) 사용하기 (1) | 2016.11.23 |
---|---|
[MySQL] 8장 유니온(UNION), 서브 쿼리 (1) | 2016.11.22 |
[MySQL] 6장 외래 키 설정하기, 1NF (테이블 쪼개기), (1) | 2016.11.21 |
[MySQL] 5장 정규화 (1NF, 2NF, 3NF) (3) | 2016.11.19 |
[MySQL] 4장 키(Primary Key, Foreign Key)의 종류와 함수적 종속 (7) | 2016.11.19 |