SQL과 데이터베이스 - 조인과 집계 데이터 : INNER JOIN
카테고리 : SQL >> Sqlgrammar
INNER JOIN
이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.
INNER 조인 실습
● 기본 실습
: 저번 포스트에서 만들었던 BASKET_A와 BASKET_B 테이블을 사용한다
SELECT
A.ID ID_A
, A.FRUIT FRUIT_A
, B.ID ID_B
, B.FRUIT FRUIT_B
FROM BASKET_A A
INNER JOIN BASKET_B B
ON A.FRUIT = B.FRUIT;
>> INNER 조인은 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력하는 것이다.
● dvdrental DB 이용 - 2개의 테이블 조인
SELECT
A.CUSTOMER_ID, A.FIRST_NAME
, A.LAST_NAME, A.EMAIL
, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
INNER JOIN PAYMENT B
ON A.CUSTOMER_ID = B.CUSTOMER_ID;
>> 고객은 여러건을 결제를 할 수 있다. 즉, 고객1:결제M의 관계 => 1:M 관계가 된다. (총 14596행)
즉, 한 명의 고객은 여러 건의 결제내력을 가질수 있고
하나의 결제는 반드시 고객을 가져야 한다.
- PAYMENT(결제) 정보개수 확인
SELECT count(*) FROM PAYMENT;
- 한 명 고객의 결제내역을 따로 추출할 수 있다.
SELECT
A.CUSTOMER_ID, A.FIRST_NAME
, A.LAST_NAME, A.EMAIL
, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
INNER JOIN PAYMENT B
ON A.CUSTOMER_ID = B.CUSTOMER_ID
WHERE A.CUSTOMER_ID = 2;
● dvdrental DB 이용 - 3개의 테이블 조인
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
INNER JOIN PAYMENT B
ON A.CUSTOMER_ID = B.CUSTOMER_ID
INNER JOIN STAFF C
ON B.STAFF_ID = C.STAFF_ID;
>> 고객1 : 결제 M : 직원1의 관계 (마찬가지로 결제내역 14596건이 추출됨)
즉, 한 명의 직원은 여러 건의 결제내역을 처리한다.
하나의 결제는 반드시 처리한 직원이 존재한다.
한 명의 고객은 여러 건의 결제내역을 가질 수 있다.
하나의 결제는 반드시 고객을 가져야 한다.