내가 한 노력들

[DB] SQL-99 표준 문법을 이용한 조인 본문

IT 공부/DB

[DB] SQL-99 표준 문법을 이용한 조인

JONGI-N CHOI 2021. 11. 30. 12:00

앞에 포스팅한 조인글에서는 SQL-99표준을 이용하지 않고 조인을 사용했는데 

이번에는 SQL-99표준 문법을 사용한 조인을 배워볼려고 합니다.

 

SQL-99 표준 문법을 사용해서 얻는 이점이 무엇인가??? 

WHERE문과 조인 조건식을 따로 분리할 수 있기 때문에  가독성이 좋아집니다. 

 


NATURAL JOIN

앞서 배운 등가 조인과 같은 방식으로 조인됩니다.

SELECT *
FROM 학생 S NATURAL JOIN 학과 M;

등가 조인인데 왜 WHERE절을 이용해서 조건식을 만들어주지 않는 이유는 ??? 

바로 NATURAL JOIN은 두 테이블 학생/학과의 공통 속성이 학과번호를 기준으로 자동으로 조인해주기 때문입니다.

 

등가 조인인 경우

SELECT *
FROM 학생 S, 학과 M
WHERE 학생.학과번호 = 학과.학과번호;

위의 두개의 쿼리문의 출력결과는 똑같습니다.

 


JOIN ~ USING

JOIN ~ USING도 마찬가지로 등가 조인과 같은 결과를 내줍니다. 

NATURAL JOIN과의 차이점은 무엇인가 하면, 조인 조건식의 속성을 지정해줄 수 있다는 것입니다. 

SELECT *
FROM 학생 JOIN 학과 USING (학과번호);

JOIN ~ ON

JOIN ~ ON도 등가 조인의 종류로써, 조인 기준 조건식을 ON 뒤에 명시 해줍니다. 

 

SELECT *
FROM 학생 S JOIN 학과 M ON (S.학과번호 = M.학과번호)
WHERE 학비 >= 300;

ON뒤에 조인의 조건식을 따로 적어줍니다. 

 

맨 위에서 설명했던 SQL-99문법을 사용해서 좋은점에 대한 이유가 바로 이것인데, JOIN조건식을 따로 지정하기 때문에

WHERE절과 구분되어 쿼리의 가독성이 올라갑니다. 


외부 조인 

 

왼쪽 외부 조인

SELECT *
FROM 학생 S1 LEFT OUTER JOIN 학생 S2 ON (S1.멘토 = S2.학번);

 

오른쪽 외부 조인

SELECT *
FROM 학생 S1 RIGHT OUTER JOIN 학생 S2 ON (S1.멘토 = S2.학번);

 

전체 외부 조인

SELECT *
FROM 학생 S1 FULL OUTER JOIN 학생 S2 ON (S1.멘토 = S2.학번);

3개 이상의 테이블을 조인할 때

FROM TABLE1 JOIN TABLE2 ON (조건식)
JOIN TABLE3 ON (조건식)