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

MySQL 서브쿼리로 뷰(View) 생성하는 방법 완벽 가이드

서브쿼리를 활용한 MySQL 뷰 생성 개요

MySQL에서 뷰(View)는 복잡한 쿼리를 재사용 가능한 형태로 저장할 수 있는 강력한 기능입니다. 이 글에서는 서브쿼리(subquery)를 사용하여 뷰를 생성하는 방법을 실제 예제와 함께 자세히 알아보겠습니다.

예제 데이터: Cars 테이블

설명을 위해 다음과 같은 'Cars' 테이블의 데이터를 사용합니다.

mysql> select * from cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
|    1 | Nexa         | 750000  |
|    2 | Maruti Swift | 450000  |
|    3 | BMW          | 4450000 |
|    4 | VOLVO        | 2250000 |
|    5 | Alto         | 250000  |
|    6 | Skoda        | 1250000 |
|    7 | Toyota       | 2400000 |
|    8 | Ford         | 1100000 |
+------+--------------+---------+
8 rows in set (0.08 sec)

서브쿼리로 뷰 생성하기

아래 쿼리는 서브쿼리가 제공하는 값을 기반으로 'cars_avgprice'라는 이름의 뷰를 생성합니다. 여기서 중요한 점은 서브쿼리가 반드시 괄호( ) 안에 포함되어야 한다는 것입니다.

mysql> Create view cars_avgprice AS SELECT NAME, Price FROM Cars WHERE price > (SELECT AVG(Price) from cars);
Query OK, 0 rows affected (0.12 sec)

mysql> Select * from cars_avgprice;
+--------+---------+
| NAME   | Price   |
+--------+---------+
| BMW    | 4450000 |
| VOLVO  | 2250000 |
| Toyota | 2400000 |
+--------+---------+
3 rows in set (0.03 sec)

서브쿼리의 동작 원리 이해하기

위의 서브쿼리를 개별적으로 실행해 보면, 뷰가 어떻게 값을 얻게 되었는지 명확하게 이해할 수 있습니다.

mysql> Select AVG(Price) from cars;
+--------------+
| AVG(Price)   |
+--------------+
| 1612500.0000 |
+--------------+
1 row in set (0.00 sec)

결과 분석

서브쿼리 (SELECT AVG(Price) FROM cars)는 전체 차량 가격의 평균값인 1,612,500을 반환합니다. 따라서 뷰 'cars_avgprice'는 평균 가격보다 비싼 차량들, 즉 BMW(4,450,000), VOLVO(2,250,000), Toyota(2,400,000)만을 결과로 보여주게 됩니다.

이처럼 서브쿼리를 활용한 뷰 생성은 평균값, 최댓값 등 집계 함수의 결과를 조건으로 활용해야 할 때 매우 유용합니다. 한 번 뷰를 만들어 두면 복잡한 조건의 쿼리를 매번 작성할 필요 없이 간단한 SELECT 문으로 손쉽게 조회할 수 있다는 장점이 있습니다.