[mySQL] 서브쿼리 중첩의 문제점과 뷰(view) 이해하기

DB 2023. 5. 20.

 

서브쿼리 이해하기

 

뷰(view): 가상테이블, 데이터베이스의 여러 테이블에서 얻은 정보를 하나의 테이블처럼 보여주는 도구이다.

  복잡한 쿼리를 뷰로 만들어 놓고 다른 테이블에서 그 뷰를 마치 테이블 처럼 사용할 수 있다.

 

아래 SQL문은 '고객'과 '주문' 테이블이 있고, 고객별로 총 주문 금액을 알게 해 준다.

SELECT customers.id, customers.name, SUM(orders.amount) as total_order_amount
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id
GROUP BY customers.id;

 

이 쿼리를 customer_orders라는 뷰로 아래와 같이 만들 수 있다. ( // 는 주석 )

CREATE VIEW customer_orders AS  // VIEW 이름(테이블 이름): customer_roders
SELECT customers.id, customers.name, SUM(orders.amount) as total_order_amount
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id
GROUP BY customers.id;

 

 

이 뷰는 다음 예시와 같이 사용이 가능하다.

SELECT *
FROM customer_orders
WHERE total_order_amount > 1000;

 

 


뷰(view)와 일반 테이블의 차이점

뷰는 테이블 처럼 컴퓨터에서 데이터 크기만큼 물리적인 용량을 차지하고 있는 것이 아니다.