테이블을 여러 개 조합해서 출력하고싶으면 INNER JOIN을 쓰면 된다. 그리고 공통점이 있는 행만 필터링하고 싶으면 ON 조건문을 붙이면 된다.
근데 공통점이 없는 행도 함께 출력하고싶으면 LEFT,RIGHT JOIN, OUTER JOIN을 쓰면 된다.


저번에 썼던 program, teacher 테이블에 행 1개씩 추가
INNER JOIN 결과 + 왼쪽 테이블 모든 행을 출력하고싶으면
LEFT JOIN 문법을 쓰면 된다.
SELECT * FROM program
LEFT JOIN teacher
ON program.강사id = teacher.id
위 코드에서 왼쪽 테이블은 program이다.

왼쪽 테이블의 모든 행이 출력되었고 왼쪽 테이블의 강사 id와 일치하는 오른쪽 테이블 행이 없는 경우는 NULL로 채워준다.
INNER JOIN 결과 + 오른쪽 테이블 모든 행을 출력하고 싶으면 RIGHT JOIN 문법을 쓰면 된다.
SELECT * FROM program
RIGHT JOIN teacher
ON program.강사id = teacher.id
위 코드에서 오른쪽 테이블은 teacher이다.

오른쪽 테이블의 행이 모두 출력되었고 오른쪽 테이블의 id와 일치하는 왼쪽 테이블이 없는 경우는 NULL로 채워준다.
LEFT,RIGHT JOIN을 쓰는 경우는 테이블끼리 합칠 때 NULL이 발생하는 부분을 미리 찾고 싶을 때 사용한다.
SELECT * FROM program
LEFT JOIN teacher
ON program.강사id = teacher.id
WHERE 컬럼명 IS NULL
IS NULL 조건은 NULL을 담고있는 행만 필터링해준다.
이렇게 NULL이 뜨는 내용을 색출해서 이상한 점을 파악할 수 있다.
LEFT JOIN과 RIGHT JOIN 결과를 합해서 출력하고싶으면 FULL JOIN 문법을 쓰면된다.
SELECT * FROM program
FULL JOIN teacher
ON program.강사id = teacher.id

select 상품명 from sales
right join product on sales.상품id = product.id
where sales.상품id is null
select 고객명 from user_table
left join sales on sales.고객번호 = user_table.id
where sales.id is null