2개 테이블에서 데이터 불러오기(RIGHT JOIN)
앞에서 우리는 LEFT JOIN문에 대해서 학습했습니다.
LEFT JOIN이 있으면 RIGHT JOIN도 있을거라고 생각하실 수 있습니다.
없습니다.
농담입니다. 있습니다. ㅋㅋ
RIGHT JOIN은 이제 감이 오실 수 있습니다.
맞습니다. 오른쪽 테이블을 기준으로 삼습니다.
RIGHT JOIN문 사용하기
SELECT s.name, a.address FROM student s RIGHT JOIN address a ON(s.num = a.memberID);
위와 같이 JOIN문 앞에 RIGHT가 붙습니다.
그럼 위의 쿼리문을 입력합니다.
위의 결과는 INNER JOIN의 결과인 아래의 결과가 똑같습니다.
이유는 오른쪽 테이블인 address테이블의 데이터는 모두 minnie의 데이터이기 때문입니다.
즉, student테이블의 num필드에 없는 값을 넣어야합니다.
그럼 실험을 위해 num필드의 값과 일치하지 않는 값을 넣겠습니다.
address 테이블에 다음이 데이터를 넣습니다.
INSERT INTO address(memberID, address) VALUES(20200009, 'Songpa Seoul S.Korea');
잘 들어갔는지 확인해 봅시다.
SELECT * FROM address;
student 테이블과 일치하지 않은 레코드를 추가했습니다.
그러면 위에서 사용한 RIGHT JOIN문을 다시 실행하겠습니다.
SELECT s.name, a.address FROM student s RIGHT JOIN address a ON(s.num = a.memberID);
right 테이블을 기준으로 하기 때문에 student테이블에는 맞는 데이터가 없더라도 우리가 방금 추가한 데이터가 표시됩니다.
그러면 이번엔 right테이블에 데이터가 있고 left 테이블인 student에는 매칭 데이터가 없는 right 테이블의 레코드를 불러오겠습니다.
이전 강좌와 같이 WHERE문을 사용합니다.
WHERE s.num IS NULL;
그럼 최종적으로
SELECT s.name, a.address FROM student s RIGHT JOIN address a ON(s.num = a.memberID) WHERE s.num IS NULL;
실행을 해보면..
현재까지의 db 백업 (아래는 현재까지의 작업을 백업한거라서 중도에 들어오신분들을 위한거에요.)
david_db smart study_db