본문 바로가기
DB

[MySQL] 뷰 (view) 생성, 수정, 삭제, 조회 하는 방법

by 세바개님 2023. 3. 13.

MySQL에서 View(뷰)는 하나 이상의 테이블에서 쿼리문을 실행한 결과를 가상의 테이블로 나타내는 개념입니다. View는 실제 데이터를 저장하지 않고, 쿼리 실행 결과를 기반으로 데이터를 조회합니다.

 

1. View 생성(Create View)

View를 생성하는 방법은 다음과 같습니다.

 

CREATE VIEW view_name AS 
SELECT column1, column2, ... 
FROM table_name WHERE condition;


위 SQL문에서 view_name은 생성하려는 View의 이름을, column1, column2, ...은 조회하려는 열의 이름을, table_name은 조회하려는 테이블의 이름을, condition은 조회 조건을 나타냅니다.

예를 들어, customers와 orders 두 개의 테이블이 있고, 이 두 개의 테이블을 조인하여 View를 생성하려면 다음과 같이 작성할 수 있습니다.

 

CREATE VIEW customer_orders AS 
SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date 
FROM customers 
INNER JOIN orders 
  ON customers.customer_id = orders.customer_id;

위 SQL문은 customers와 orders 테이블을 조인하여, customer_id, customer_name, order_id, order_date 열을 가지는 customer_orders View를 생성합니다.

 

 

2. View 수정(Alter View)

View를 수정하는 방법은 다음과 같습니다.

 

ALTER VIEW view_name AS 
SELECT column1, column2, ... 
FROM table_name WHERE condition;


위 SQL문에서 view_name은 수정하려는 View의 이름을, column1, column2, ...은 조회하려는 열의 이름을, table_name은 조회하려는 테이블의 이름을, condition은 조회 조건을 나타냅니다.

예를 들어, customer_orders View를 수정하여, order_amount 열을 추가하려면 다음과 같이 작성할 수 있습니다.

 

ALTER VIEW customer_orders AS 
SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date, order_items.order_amount 
FROM customers 
INNER JOIN orders 
  ON customers.customer_id = orders.customer_id 
INNER JOIN order_items 
  ON orders.order_id = order_items.order_id;


위 SQL문은 customer_orders View에 order_items 테이블을 추가하여, order_amount 열을 추가합니다.


3. View 삭제(Drop View)

View를 삭제하는 방법은 다음과 같습니다.

 

DROP VIEW view_name;


위 SQL문에서 view_name은 삭제하려는 View의 이름을 나타냅니다.

예를 들어, customer_orders View를 삭제하려면 다음과 같이 작성할 수 있습니다.

 

DROP VIEW customer_orders;


4. View 조회(Select View)

View를 조회하는 방법은 일반적인 테이블을 조회하는 것과 동일합니다.

 

SELECT * FROM view_name;


위 SQL문에서 view_name은 조회하려는 View의 이름을 나타냅니다.

예를 들어, customer_orders View를 조회하려면 다음과 같이 작성할 수 있습니다.

SELECT * FROM customer_orders;


5. 장점

  • 데이터 일관성 유지: 여러 테이블에 있는 데이터를 한눈에 볼 수 있어서 데이터의 일관성을 유지할 수 있습니다.
  • 보안성 강화: View에 대한 접근 권한을 부여하여, 보안성을 강화할 수 있습니다.
  • 쿼리 간결화: 자주 사용되는 쿼리를 뷰로 만들어서, 쿼리문의 길이를 줄일 수 있습니다.
  • 성능 개선: 쿼리문의 실행 계획을 최적화하여, 성능을 개선할 수 있습니다.


6. 고려사항

  • View를 사용하는 쿼리문에서 효율적으로 사용할 수 있는 인덱스를 포함하는 것이 좋습니다.
  • View를 만들 때, UNION, GROUP BY, DISTINCT와 같은 복잡한 쿼리문을 사용할 경우, 성능 문제가 발생할 수 있습니다.
  • View는 갱신이나 삭제 등의 작업이 불가능합니다. 따라서, 데이터 변경이 필요한 경우, View를 참조하는 실제 테이블을 수정해야 합니다.

'DB' 카테고리의 다른 글

[MySQL] 서브쿼리 사용법  (0) 2023.03.16
[MySQL] UNION 연산자 사용법  (0) 2023.03.13
[MySQL] 날짜 형식 변환 방법  (0) 2023.03.11
[MySQL] 몫과 나머지 구하기  (0) 2023.03.11
[MySQL] 그룹별 최대값, 최소값 구하는 방법  (0) 2023.03.10

댓글