11-1 : 쿼리문 JOIN

JJeong·2021년 2월 15일
0

조인은 '어울리다'라는 의미를 가지고 있는데 이 말대로, 데이터베이스에서 테이블간의 결합(어울림)을 이야기합니다. 즉, 두개 이상의 테이블에 대해서 결합하여 나타낼 때 조인이라는 것을 이용합니다.

이너조인은 위와 같이 우리가 조인하고자 하는 두개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식입니다. sql에서도 단순히 조인을 사용할때는 암묵적으로 이너조인을 뜻하게 됩니다.

SELECT table1.col1, table1.col2, ..., table2.col1, table2.col2, ...
FROM table1 [table1의 별칭]
JOIN table2 [table2의 별칭] ON table1.col1 = table2.col2

위의 쿼리에서 대괄호로 사용된 각 테이블의 별칭은 SELECT 절에서 컬럼이름 앞에 붙는 테이블명에서 사용될 수 있습니다.
조인시에 table1과 table2의 어떤 컬럼을 기준으로 할지는 ON 뒤에 작성합니다.
즉 위의 쿼리에서는 table1의 col1 컬럼과 table2의 col2 컬럼이 같은 행들에 대해서 조인을 실시합니다.

아우터 조인은 위의 그림과 같이 레프트 아우터 조인, 라이트 아우터 조인 그리고 그 두개를 합친 풀 아우터 조인 총3개가 있습니다.
아우터 조인은 그림과 같이 두 테이블의 공통영역을 포함해 한쪽 테이블의 다른 데이터를 포함하는 조인방식입니다.

employee 테이블을 기준으로 보면 '문정진'이라는 이름의 사원데이터가 누락되어 있으며, department 테이블을 기준으로 보면 '전산부'라는 부서가 누락되어 있습니다.
해당 데이터들이 누락된 이유는 두 테이블간의 공통된 데이터가 없기 때문이죠.

이때 left와 outer를 정하는 기준은 from절에 적어준 테이블이 left가 되고, join절에 적어준 테이블이 right가 됩니다.


<예제 코드>

use fast_donation;
SELECT donation_classifications.*,  admin_users .* 
FROM donation_classifications 
INNER JOIN admin_users ON donation_classifications.created_by = admin_users.id;
-- 별칭 사용
use fast_donation;
SELECT DC.donation_id, delivery_reservation_no, unit_price, AU.id, email
FROM donation_classifications DC INNER JOIN admin_users AU ON DC.created_by = AU.id;

0개의 댓글