[DB] VIEW

2024. 6. 22. 13:46BE/DB

1. View

 

가. View란?

 

데이터베이스에 존재하는 ‘가상의 테이블

 

실제 행과 열을 가지고 있지만 데이터를 저장하고 있지 않고 SQL만 저장한다.

 

MySQL에서는 단지 다른 테이블이나 View의 데이터를 보여주는 역할만 수행한다.

 

복잡한 Join이나 Subquery를 View를 사용해서 단순하게 만들 수 있다.

 


나. 장점

SELECT CustomerName, OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Customers.Country = 'USA';

예를 들어, 다음과 같은 복잡한 쿼리를 가지고 있다고 가정해 본다. (실제로는 더 복잡하고 반복되겠죠?)

 

CREATE VIEW USA_Orders AS
SELECT CustomerName, OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Customers.Country = 'USA';

뷰를 사용하면 쿼리문을 단순화 시킬 수 있다.

 

SELECT * FROM USA_Orders;

이렇게 뷰를 사용하면 복잡한 쿼리를 단순화해서 사용할 수 있다!

 


다. 단점

 

View를 통한 삽입, 삭제, 갱신 작업에 제안 사항을 가진다.

 

단순 뷰에서는 다음 몇가지 경우에 DML 명령어를 사용할 수 없다.

 

  • View 정의 시 포함되지 않은 칼럼 중 not null 제약조건이 지정되어 있는 경우.
  • 산술 표현식을 포함한 컴럼이 포함되어 있는 경우.
  • distinct를 포함하는 경우.
  • 그룹 함수나 group by 절을 포함하는 경우.

 

때문에 View는 조회할 때 사용할고 삽입, 수정, 삭제는 실제 물리적인 테이블에서 처리하자.

 


2. View의 종류

 

  • 단순 뷰 (Simple View)
    • 하나의 테이블로 생성
    • 그룹 함수 사용 불가능
    • distinct 사용 불가능
    • DML 사용 가능
  • 복합 뷰 (Complex View)
    • 여러 개의 테이블로 생성 (join)
    • 그룹 함수 사용 가능
    • distinct 사용 가능
    • DML 사용 불가능
  • 인라인 뷰 (Inline View)
    • 일반적으로 가장 많이 사용됨.
    • FROM 절 안에 SQL문이 들어가는 것
    • 일시적인 View. 쿼리 내부에서만 존재하고, 쿼리가 종료되면 사라진다.

 


3. 생성

create or replace view view_name
as
select field1, field2
form table_name
where condition... ;

 


4. 삭제

drop view view_name;

 


'BE > DB' 카테고리의 다른 글

[DB] SubQuery  (0) 2024.06.23
[DB] JOIN  (0) 2024.06.22
[DB] INDEX  (1) 2024.04.15
[DB] Transaction  (1) 2024.04.14
[DB] SET Operator  (0) 2024.04.14