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

RIGHT JOIN을 활용한 MySQL 뷰(View) 생성 방법

RIGHT JOIN으로 MySQL 뷰 만들기

MySQL에서 RIGHT JOIN을 사용해 뷰(View)를 생성하는 과정을 예제와 함께 살펴보겠습니다. 이를 위해 아래와 같은 두 개의 테이블, 즉 CustomersReserve 테이블의 데이터를 사용합니다.

예제 테이블 데이터

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 테이블에는 네 명의 고객 정보가 저장되어 있고, Reserve 테이블에는 각 고객의 차량 예약 기록이 들어 있습니다.

RIGHT JOIN을 사용한 뷰 생성 쿼리

이제 다음 쿼리를 실행하면 위 두 테이블에 대해 RIGHT JOIN을 적용한 customer_VRight라는 이름의 뷰가 생성됩니다. 이 뷰는 차량을 한 번도 예약하지 않은 고객의 이름만 조회하도록 설계되었습니다.

mysql> Create view customer_VRight AS SELECT NAME from Reserve RIGHT JOIN customers ON customer_id = id WHERE id IS NULL;
Query OK, 0 rows affected (0.08 sec)

mysql> Select * from customer_VRight;
+----------+
| NAME     |
+----------+
| Virender |
+----------+
1 row in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 어떻게 작동하는지 단계별로 이해해 보겠습니다.

1. RIGHT JOIN의 특성 활용: RIGHT JOIN은 오른쪽 테이블(customers)의 모든 행을 결과에 포함시키며, 왼쪽 테이블(Reserve)에 일치하는 데이터가 없으면 NULL 값을 반환합니다.

2. NULL 조건 필터링: WHERE id IS NULL 조건을 통해 예약 기록이 전혀 없는, 즉 조인 결과에서 매칭되지 않은 고객만 걸러냅니다.

3. 결과 확인: 실행 결과로 Virender라는 고객만 조회되었습니다. 이는 Virender(Customer_Id = 4)만이 Reserve 테이블에 예약 기록이 없는 유일한 고객이기 때문입니다.

이처럼 RIGHT JOIN과 IS NULL 조건을 조합하면, 특정 테이블에 연관 데이터가 존재하지 않는 레코드를 손쉽게 찾아낼 수 있습니다. LEFT JOIN을 사용하는 경우에도 동일한 논리를 반대 방향으로 적용하면 같은 결과를 얻을 수 있다는 점도 참고하시기 바랍니다.