INNER 조인은 대표적인 조인의 종유이다. 이는 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다.
3-2. INNER 조인 문법
1 2 3 4 5 6 7 8 9
SELECT A.COL_A1, A.COL_A2, ..., B.COL_B1, B.COL_B2, ... FROM TABLE_A A INNERJOIN TABLE_B B ON A.COL_Z_A = B.COL_Z_B -- 조인의 기준이 되는 컬럼을 지정
3-3. INNER 조인 실습
3-3-1. BASKET 데이터를 활용한 간단한 실습
1 2 3 4 5 6 7 8 9 10 11
SELECT-- 지정한 컬럼을 조회한다 A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM-- BASKET_A 테이블에과 BASKET_B 테이블을 BASKET_A A -- FRUIT 컬럼 기준으로 조인한다. INNERJOIN BASKET_B B ON A.FRUIT = B.FRUIT
3-3-2. dvdrental 데이터를 활용한 실습
(1) 2개의 테이블 조인
>> 테이블 구성
한 명의 고객은 여러 건의 결제내역을 가질 수 있다
하나의 결제는 반드시 고객을 가져야 한다
>> 실습
MISSION 1: CUSTOMER 테이블에 있는 고객 정보와 PAYMENT 테이블에 있는 결제정보를 종합하여 추출
1 2 3 4 5 6 7 8 9 10
SELECT A.CUSTOMER_ID, A.FIRST_NAME, A.LAST_NAME, A.EMAIL, B.AMOUNT, B.PAYMENT_DATE FROM CUSTOMER A INNERJOIN PAYMENT B ON A.CUSTOMER_ID = B.CUSTOMER_ID
MISSION 2: 위에서 추출된 데이터에서 CUSTOMER_ID가 2인 행만 추출
1 2 3 4 5 6 7 8 9 10 11 12
SELECT A.CUSTOMER_ID, A.FIRST_NAME, A.LAST_NAME, A.EMAIL, B.AMOUNT, B.PAYMENT_DATE FROM CUSTOMER A INNERJOIN PAYMENT B ON A.CUSTOMER_ID = B.CUSTOMER_ID WHERE A.CUSTOMER_ID = 2
(2) 3개의 테이블 조인
>> 테이블 구성
한 명의 직원은 여러 건의 결제내역을 처리한다
하나의 결제는 반드시 처리한 직원이 존재한다
한 명의 고객은 여러 건의 결제내역을 가질 수 있다
하나의 결제는 반드시 고객을 가져야 한다
>> 실습
MISSION: 결제를 진행한 고객 정보(CUSTOMER), 해당 고객의 결제내역(PAYMENT), 그리고 해당 결제를 처리하는 직원정보(STAFF)를 종합하여 추출
1 2 3 4 5 6 7 8 9 10 11 12
SELECT A.CUSTOMER_ID, A.FIRST_NAME, A.LAST_NAME, A.EMAIL, B.AMOUNT, B.PAYMENT_DATE, C.FIRST_NAME AS S_FIRST_NAME, C.LAST_NAME AS S_LAST_NAME FROM CUSTOMER A INNERJOIN PAYMENT B ON A.CUSTOMER_ID = B.CUSTOMER_ID INNERJOIN STAFF C ON B.STAFF_ID = C.STAFF_ID
4. OUTER 조인
4-1. 개념
특정 집합을 기준으로 매칭된 집합을 출력하지만, 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다.
4-2. OUTER 조인 문법
(1) LEFT OUTER 조인 문법
1 2 3 4 5 6 7 8 9 10
-- LEFT OUTER JOIN SELECT A.COL_A1, A.COL_A2, ..., B.COL_B1, B.COL_B2, ... FROM TABLE_A A LEFTOUTERJOIN-- 'LEFT JOIN'만 사용해도 좋다 TABLE_B B ON A.COL_Z_A = B.COL_Z_B
(2) RIGHT OUTER 조인 문법
1 2 3 4 5 6 7 8 9 10
-- RIGHT OUTER JOIN SELECT A.COL_A1, A.COL_A2, ..., B.COL_B1, B.COL_B2, ... FROM TABLE_A A RIGHTOUTERJOIN-- 'RIGHT JOIN'만 사용해도 좋다 TABLE_B B ON A.COL_Z_A = B.COL_Z_B
4-3. OUTER 조인 실습
>> LEFT OUTER JOIN
(1) LEFT ONLY + LEFT&RIGHT
1 2 3 4 5 6 7 8 9 10 11
SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A LEFTOUTERJOIN BASKET_B B ON A.FRUIT = B.FRUIT
(2) LEFT ONLY
1 2 3 4 5 6 7 8 9 10 11 12
SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A LEFTOUTERJOIN BASKET_B B ON A.FRUIT = B.FRUIT WHERE B.ID ISNULL
>> RIGHT OUTER JOIN
(1) RIGHT ONLY + LEFT&RIGHT
1 2 3 4 5 6 7 8 9 10
SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A RIGHTJOIN BASKET_B B ON A.FRUIT = B.FRUIT
(2) RIGHT ONLY
1 2 3 4 5 6 7 8 9 10 11
SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A RIGHTJOIN BASKET_B B ON A.FRUIT = B.FRUIT WHERE A.ID ISNULL