Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 INNER JOIN으로 뷰(View) 생성하는 방법

개요

MySQL에서 INNER JOIN을 활용해 뷰(View)를 생성하는 방법을 예제와 함께 살펴보겠습니다. 이를 위해 'Customers' 테이블과 'Reserve' 테이블의 다음 데이터를 사용합니다.

예제 데이터 준비

mysql> Select * from customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from reserve;
+------+------------+
| ID   | Day        |
+------+------------+
| 1    | 2017-12-30 |
| 2    | 2017-12-28 |
| 2    | 2017-12-25 |
| 1    | 2017-12-24 |
| 3    | 2017-12-26 |
+------+------------+
5 rows in set (0.00 sec)

'Customers' 테이블에는 고객 ID와 이름이 저장되어 있고, 'Reserve' 테이블에는 예약자 ID와 예약 날짜가 기록되어 있습니다. 여기서 ID 2번 고객(Yashpal)은 두 번, ID 1번(Rahul)과 3번(Gaurav)은 각각 한 번씩 예약했으며, ID 4번(Virender)은 예약 기록이 없습니다.

INNER JOIN으로 뷰 생성하기

다음 쿼리는 두 테이블을 INNER JOIN으로 연결하여 'customer_V'라는 이름의 뷰를 생성합니다. INNER JOIN의 특성상 양쪽 테이블에서 조인 조건이 일치하는 행만 결과에 포함되므로, 이 뷰에는 자동차를 한 번 이상 예약한 고객의 이름만 나타나게 됩니다. 또한 DISTINCT 키워드를 사용해 여러 번 예약한 고객의 이름이 중복 출력되지 않도록 처리했습니다.

mysql> CREATE VIEW customer_V AS
    -> Select DISTINCT Name FROM customers c
    -> INNER JOIN Reserve R ON R.id = c.customer_id;
Query OK, 0 rows affected (0.08 sec)

생성된 뷰 조회하기

뷰는 일반 테이블과 동일한 방식으로 SELECT 문을 사용해 조회할 수 있습니다.

mysql> Select * from customer_V;
+---------+
| Name    |
+---------+
| Rahul   |
| Yashpal |
| Gaurav  |
+---------+
3 rows in set (0.02 sec)

결과 분석

출력 결과에서 확인할 수 있듯이, 예약 기록이 있는 세 명의 고객(Rahul, Yashpal, Gaurav)만 뷰에 포함되었습니다. 반면 예약 이력이 전혀 없는 Virender는 INNER JOIN 조건에 맞는 행이 없기 때문에 결과에서 자연스럽게 제외됩니다. 또한 Yashpal은 두 번 예약했지만 DISTINCT 덕분에 이름이 한 번만 표시됩니다.

이처럼 INNER JOIN과 뷰를 함께 활용하면, 여러 테이블에 흩어진 데이터를 조인한 결과를 하나의 가상 테이블로 만들어 필요할 때마다 간편하게 재사용할 수 있다는 장점이 있습니다.