2개 테이블에서 데이터 불러오기(LEFT JOIN)

MySQL LEFT JOIN

앞에서 우리는 JOIN문에 대해서 학습했습니다.

정확히는 INNER JOIN문이었습니다.

INNER JOIN문의 결과는 다음과 같았습니다.

SELECT s.name, a.address FROM student s JOIN address a ON(s.num = a.memberID);

즉, 두 테이블간에 유효한 데이터만 불러왔습니다.

한 테이블에 데이터가 없으면 그 데이터는 안불러오죠.

하지만 당연하게도 주소를 등록하지 않은 고객들도 있습니다.

주소를 등록하지 않은 고객들의 정보도 함께 불러오겠습니다.

LEFT JOIN문 사용하기

LEFT는 왼쪽을 의미하지요?

SELECT s.name, a.address FROM student s JOIN address a ON(s.num = a.memberID);

위의 쿼리문에서 student 테이블은 왼쪽에 있고 address 테이블은 오른쪽에 있습니다.

즉, 왼쪽에 있는 테이블을 기준으로 한다는 의미입니다.

그러면 다음의 쿼리문을 사용해 결과를 확인합시다.

SELECT s.name, a.address FROM student s LEFT JOIN address a ON(s.num = a.memberID);

단순히 JOIN앞에 LEFT만 넣었습니다.

어떤가요? 결과가 다릅니다.

address 테이블에 정보가 없더라도 LEFT JOIN을 사용하면 LEFT에 해당하는 테이블인 student 테이블에 정보가 모두 나타납니다.

자 그러면 하나 더 해봅시다. 이번에는 address 테이블에 데이터가 없는 student 데이터만 불러보겠습니다.

MySQL LEFT JOIN

간단합니다. 조건문을 추가합니다. student테이블의 대표 필드값이 NULL인 것을 불러옵니다.

그려면 조건문으 다음과 같습니다.

WHERE a.addressID IS NULL;

그럼 최종적으로 쿼리문은 다음과 같습니다.

SELECT s.name, a.address FROM student s LEFT JOIN address a ON(s.num = a.memberID) WHERE a.addressID IS NULL;

결과와 같이 address 테이블에 데이터가 없는 student 테이블이 데이터만 보입니다.

현재까지의 db 백업 (아래는 현재까지의 작업을 백업한거라서 중도에 들어오신분들을 위한거에요.)

david_db smart study_db