문제

문제 답안
SELECT
I.NAME,
I.DATETIME
FROM ANIMAL_INS I
LEFT OUTER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY DATETIME ASC
LIMIT 3;
답안 풀이
WHERE O.ANIMAL_ID IS NULL
이 부분에서
WHERE I.ANIMAL_ID IS NULL
이라고 하면 아무것도 안나오게 되는데,
왜냐면 LEFT OUTER JOIN을 했기 때문에 기준 테이블에서 NULL인 값은 없기 때문이다! (조인 테이블에서 NULL값이 생김)
OUTER JOIN
- FULL OUTER JOIN : 1) 전체 외부 조인.
2) 기준 테이블과 조인 테이블의 NULL인 값까지 다 보여준다.
3) 합집합 개념.
4) mysql에서는 full outer join을 지원하지 않는다.(단, left join과 right join을 union으로 표현 가능)

- LEFT (OUTER) JOIN : 1) OUTER를 생략하고 LEFT JOIN이라고도 한다.
2) 조인하려하는 테이블의 값에 없는 기준 테이블의 값을 조인 테이블에서 NULL로 보여주는거임.
3) 기준 테이블의 값은 다 보여짐.

- RIGHT (OUTER) JOIN : 1) OUTER를 생략하고 RIGHT JOIN이라고도 한다.
2) 조인하려하는 테이블의 값에 없는 기준 테이블의 값을 기준 테이블에서 NULL로 보여주는거임.
3) 조인 테이블의 값은 다 보여짐.
