본문 바로가기
생활코딩/DATABASE

5) DATABASE : SQL JOIN

by Love of fate 2020. 7. 28.
728x90
반응형

표를 분산하는 것을 통해 중복을 제거할 수 있다.

표를 만들 때 지침으로 삼아야 할 말

모든 표는 하나의 테마(주제)만 가져야 한다. 

-->  합쳤을 때의 정보가 다른 테이블에서도 사용되는 경우 누군가를 분가시킬 타이밍이다


그렇다고 해서 테이블에 모든 정보가 다 있는게 안좋은 게 아니다. 

두가지 방법의 장점과 단점을 합해 사용하기 위해 나온것이 JOIN 이다.


실습 준비)

좋은 부품 만들기 = 쪼개기 


LEFT OUTER JOIN  : 왼쪽에만 있는 정보도 출력하는 것 (가장 인기 O)

가장 많이 사용하는 이유

- A라는 정보만 가져올때, B에는 없는 경우가 많기 때문에 사용

ex)

 

INNER JOIN : LEFT, RIGHT, FULL 없으면 INNER JOIN 과 같다. 

- INNER JOIN은 교집합이기 때문에 NULL값이 없다.

- 양쪽 다 해당되는 데이터 SELECT 

- INNER JOIN으로 할 수 없는 것은 LEFT OUTER JOIN을 쓴다.

ex)

 

FULL OUTER JOIN : 왼쪽과 오른쪽에 있는 행 모두를 합성해서 하나의 표를 만드는 방법

- 합집합과 같음 (LEFT JOIN과 RIGHT JOIN을 합한 것)

- FULL OUTER JOIN에 대해 지원하지 않는 데이터베이스도 많다. 

그럴땐 LEFT OUTER JOIN UNION RIGHT OUTER JOIN으로 SELECT 한다. 

--> UNION은 DISTINCT(중복제거) 라는 단어를 생략하고 있는데, 중복된 결과 하나만 출력한다. 

ex)

 

EXCUSIVE LEFT JOIN : A에만 존재하는 것만 가져와 하나의 표를 만드는 방법

- SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid WHERE author.aid is NULL

ex)


LEFT OUTER JOIN, INNER JOIN가 가장 중요하고 개념만 잘 가지고 있으면 쓸 데가 가장 많고, 

나머지는 도출해 낼 수 있는 방법이라고 생각하자.


분해가 잘 되어 있어야 결합하기도 쉽다.

어떻게 테이블을 분해하는 것이 좋을 지는 데이터베이스 모델링, 정규화(normalization) 과 같은 주제를 통해서 접할 수 있다. 

 

728x90
반응형

'생활코딩 > DATABASE' 카테고리의 다른 글

6) DATABASE : 관계형 데이터 모델링  (0) 2020.07.28