내부 조인은 두 테이블 모두 데이터가 있어야만 결과가 나왔다.
이와 달리 외부 조인은 한 쪽에만 있어도 결과를 준다.
단 null로 가져옴.
먼저 inner 조인
select * from buy b inner join member m on b.mem_id = m.mem_id;
그 다음 outer join
select * from member m left outer join buy b on m.mem_id = b.mem_id;
member를 다 가져오는데, 그 중 buy에 기록이 없는 mem_id도 있음.
참고로,
select * from buy b left outer join member m on m.mem_id = b.mem_id;
select * from member m left outer join buy b on m.mem_id = b.mem_id;
저 둘이 다름.
그러니까, from 에 있는 테이블 기준으로 가져온다고 생각하셈. 저게 주임.
저 from에 있는 주에 on 해서 맞는 걸 추가로 가져온다고 생각하셈.
그래서 저런 일대다나 다대일 관계에서는 일쪽이 주로 가져오는 게 좋은 듯?
buy를 주로. 안 그럼 null 데이터가 많으니..
그러니까, left join은 from인 테이블 쪽을 나열한 다음, 일치하는 걸 오른쪽 행에 추가시킴.
inner join, outer join은 무조건 on과 함께 써야 함.
cross join은 안씀.