1. OUTTER JOIN 사용
JOIN에는 OUTTER와 INNER이 존재하고, OUTTER은 합집합, INNER은 교집합이다.
간단하게 기억을 하려면 OUTTER은 NULL값을 포함하고
INNER은 NULL값을 포함하지 않는다.
OUUTER JOIN에는 LEFT JOIN과 RIGHT JOIN이 있는데, 사실 어떤 것을 써도 상관 없다.
하지만 보통 LEFT JOIN을 사용하고 이것만 사용해서 문제 될 것은 없다.
LEFT OUTTER JOIN에서 OUTTER을 생략해도 된다.
techer 테이블에 dept 테이블을 LEFT JOIN하는데, teacher.dept와 dept.id를 매개로 진행한다.
하지만 teacher.dept에는 NULL값이 있다. 이렇게 되면 INNER JOIN은 NULL값인 teacher 데이터에 dept를 합치지 않지만, OUTTER JOIN은 dept을 합친다. dept가 없는데 어떻게 합칠까?
그냥 dept의 모든 칼럼이 NULL인 데이터를 합친다.
복잡할 필요가 없다. 그냥 합칠게 없어서 NULL을 표시했다. 라고 생각하면 편하다.
2. JOIN 사용
그냥 사용하면 된다.
3. RIGHT JOIN 사용
문제를 많이 풀어봤는데 RIGHT JOIN을 이렇게 강제로 쓰게하는 문제를 제외하고는 RIGHT JOIN을 쓰지 않아도 된다.
직관적으로, 내가 생각한 팁
teacher <- dept 이렇게 집어 넣는게 LEFT JOIN
teacher -> dept 이렇게 집어 넣는게 RIGHT JOIN
그렇다면
FROM A LEFT JOIN B
FROM B RIGHT JOIN A는 같을까?
직관적으로
A <- B
B -> A
같다. 그래서 편한거 사용하면 된다.
4. COALESCE의 사용
COALESCE(칼럼명, A) -> 칼럼의 데이터 중 NULL값을 A로 대체한다.
5. CASE 사용
CASE문은 이렇게 사용하면 된다.
CASE -> CASE문의 시작
WHEN A -> A을 만족하면
THEN a -> a을 표시한다.
WHEN B -> B를 만족하면
THEN b (추가 가능) -> b를 표시한다.
ELSE c (생략 가능) -> 아무것도 만족 안하면 c를 표시한다.
END AS K -> CASE문의 종료, 표시된 값의 칼럼명을 K라고 한다.
Trod의 phone값은 2754이다.
6. CASE문 사용
dept가 1이면 'Computing'표시 그렇지 않으면 'Other' 표시
'프로그래밍 > MySQL' 카테고리의 다른 글
[MySQL] SQL ZOO Self join Quiz 답 해설 (0) | 2021.03.15 |
---|---|
[MySQL] SQL ZOO JOIN Quiz 2 답 해설 (0) | 2021.03.14 |
[MySQL] SQL ZOO JOIN Quiz 답 해설 (0) | 2021.03.12 |
[MySQL] SQL ZOO Nested SELECT Quiz (0) | 2021.03.12 |
[MySQL] SQL ZOO Nobel Quiz 답 해설 (0) | 2021.03.12 |