SQL과 데이터베이스 - 조인과 집계 데이터 : INNER JOIN


INNER JOIN

이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.

image

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;

image

>> 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;

image

>> 고객은 여러건을 결제를 할 수 있다. 즉, 고객1:결제M의 관계 => 1:M 관계가 된다. (총 14596행)

​ 즉, 한 명의 고객은 여러 건의 결제내력을 가질수 있고

​ 하나의 결제는 반드시 고객을 가져야 한다.

- PAYMENT(결제) 정보개수 확인

SELECT count(*) FROM PAYMENT;

image

- 한 명 고객의 결제내역을 따로 추출할 수 있다.

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;

image

● 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;

image

>> 고객1 : 결제 M : 직원1의 관계 (마찬가지로 결제내역 14596건이 추출됨)

​ 즉, 한 명의 직원은 여러 건의 결제내역을 처리한다.

​ 하나의 결제는 반드시 처리한 직원이 존재한다.

​ 한 명의 고객은 여러 건의 결제내역을 가질 수 있다.

​ 하나의 결제는 반드시 고객을 가져야 한다.


© 2021. All rights reserved.

----------Powered by Hydejack----------

kyusang Hwang