JOIN

CJB_ny·2022년 3월 27일
0

DataBase

목록 보기
18/29
post-thumbnail

JOIN연산

서버로 지원하면 INDEX 관련과 JOIN에 관련한 것들 많이 물어본다.


교차결합

거의 사용은 안한다

일단 테이블을 이렇게 만들어주고

데이터를 확인하면 이렇게 뜬다.

이제 교차결합을 어떻게 하는지 보면은

CROSS JOIN을 사용해서 보면은

1 A, 1 B, 1 C, 2 A, 2 B, 3 C 이런식으로 9개가 나온다.

즉 3개씩 있으니까 3 * 3이라 9인데

이게 데이터가 100개씩 있으면 10000개가 되니까 조심해서 사용하도록.


그래서 이까지만 알아보고 이제 실무적으로 유의미한것들을 알아보도록 하자.

이두개를 서브쿼리로 합쳐서 보는 것 말고 자주 사용하는

INNERR JOIN으로 알아보도록 하자.

INNER JOIN은

"두 개의 테이블을 가로로 결합, 결합 기준을 ON으로 명시" 한다는 것이다.

ON playerID = playerID하면 어느쪽의 playerID인지 구분을 못하니

별칭을 잠시 달아주어서 구분을 할 수 있게 해준다.

실행을 하면 이렇게

players 테이블 옆에 가로로 salaries의 테이블이 붙은것을 볼 수 있다.

그래서 INNER JOIN이

playerID가 players, salaries 양쪽에 다 있고 일치하는 애들을 결합.

한쪽에 정보가 없는 경우에는 다 걸러진다.


OUTER JOIN도 있는데 이것은

-> LEFT/RIGHT JOIN으로 나뉠 수 있다..

이것은

"어느 한쪽에만 존재하는 데이터라면 어떻게 할것이냐? -> 정책"에 관한 것이다.


LEFT JOIN = "두 개의 테이블을 가로로 결합, 결합 기준을 ON으로 명시"

까지는 똑같다. 그런데

playerID가 왼쪽(LEFT)에 있으면 무조건 표시. 오른쪽(salaries)에 없으면

오른쪽 정보는 NULL로 채운다.

여기 aaronha01 이라는 사람의 playerID가 salaries에 없으면

이렇게 NULL로 채운다는 것이다.


RIGHT JOIN은 반대의 개념인데

playerID가 오른쪽(RIGHT)에 있으면 무조건 표시. 왼쪽(players)에 없으면

왼쪽 정보는 NULL로 채운다.


우리가 0 순위로 알아할 것이 INNER JOIN이다

"두 개의 테이블을 가로로 결합, 결합 기준을 ON으로 명시" 한다는 것

profile
공부 일기장으로 변해버린 블로그 (https://cjbworld.tistory.com/ <- 이사중)

0개의 댓글