한쪽에만 데이터가 있어도 결과가 조회된다.

외부 조인 형식

SELECT <열 목록>
FROM <첫 번쨰 테이블(LEFT 테이블)>
	<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
	ON <조인될 조건>
[WHERE 검색 조건]

EX1. 전체 회원의 구매기록(구매기록이 없는 회원의 정보도 함께) 출력

SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
	FROM member M
		LEFT OUTER JOIN buy B
		ON M.mem_id = B.mem_id
	ORDER BY M.mem_id;

Untitled

prod_name 이 null 인 회원 정보도 모두 표시되고 있다.

만약 INNER JOIN 때의 결과와 동일한 결과를 출력하고 싶다면 왼쪽과 오른쪽 테이블의 위치만 바꿔주면 된다.

지금은 왼쪽 테이블이 member 이고, LEFT OUTER JOIN 이므로 member 왼쪽 테이블인 member 기준으로 JOIN 을 한 것이기 때문에 모든 회원에 대한 정보가 출력된 것.

왼쪽 테이블을 buy 로 바꾸게 되면 LEFT OUTER JOIN 에서의 기준이 buy 테이블이 된다. 이 경우 buy 테이블은 하나의 회원 데이터와 무조건 연결은 되어 있지만 모든 회원과 연결되어 있진 않다. 결국 INNER JOIN 때와 같은 결과가 나옴.

EX2. 회원으로 가입만 하고 한 번도 구매한 적이 없는 회원의 목록 추출

SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
	FROM member M
		LEFT OUTER JOIN buy B
		ON M.mem_id = B.mem_id
	WHERE B.prod_name IS NULL -- prod_name 이 null 인 회원만 조회하기
	ORDER BY M.mem_id;