📚 Study/MySQL

[MySQL] VIEW

0_ch4n 2022. 7. 2. 00:38
반응형

 

✔️ VIEW

  • 데이터베이스에 존재하는 일종의 가상 테이블을 의미합니다.
  • 실제 테이블처럼 행과 열을 갖고 있지만 실제로 데이터를 저장하고 있지는 않습니다.
  • 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 테이블처럼 보여주는 역할만 수행합니다.

 

📌 특징

  • 뷰의 기반 테이블의 데이터를 수정할 경우 뷰에도 반영됩니다.
  • 뷰의 데이터를 수정할 경우 실제 데이터에도 반영됩니다.
  • 뷰로 생성된 가상 테이블에도 데이터를 삽입할 수 있지만
  • JOIN, UNION, 서브쿼리 등으로 만들어진 뷰에서는 데이터를 삽입할 수 없습니다.

 

📌 장점

  • 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있습니다.
    • 민감한 정보를 제외하고 보여주어 데이터 보안을 제공할 수 있습니다.
  • 복잡한 쿼리를 단순화해서 사용할 수 있습니다.
    • 상황에 따라 적합한 구조로 데이터를 준비 해둘 수 있습니다.
  • 쿼리를 재사용 할 수 있습니다.

 

📌 단점

  • 한 번 정의된 뷰는 변경할 수 없습니다.
  • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가집니다.
  • 자신만의 인덱스를 가질 수 없습니다.

 

📌 내용 수정이 가능한 뷰

  • 집계함수가 사용되지 않은 뷰
  • GROUP BY가 사용되지 않은 뷰
  • JOIN, UNION, 서브쿼리가 사용되지 않은 뷰 (INNER JOIN은 가능)
  • DISTINCT가 사용되지 않은 뷰

 

📌 VIEW의 생성

  • VIEW의 별명은 원본 테이블과 같은 이름을 가질 수 없습니다.
-- CREATE문을 사용해 뷰 생성
CREATE VIEW [뷰이름] AS
SELECT [컬럼이름]
FROM [테이블이름]
(WHERE [조건]);

-- CREATE OR REPLACE VIEW문을 사용해 기존 뷰를 대체하거나 새로운 뷰 생성
CREATE OR REPLACTE VIEW [뷰이름] AS
SELECT [컬럼이름]
FROM [테이블이름]
(WHERE [조건]);

 

📌 VIEW의 조건 일치

  • INSERT문을 사용할 때 테이블의 일관성을 유지하기 위해 지정한 조건에 적합한지 확인합니다.
-- 조건 일치를 포함한 VIEW 생성
CREATE VIEW [뷰이름] AS
SELECT [컬럼이름]
FROM [테이블이름]
WHERE [조건]
WITH CHECK OPTION; -- 조건이 일치하지 않으면 에러

-- 뷰에 데이터 삽입
INSERT INTO [뷰이름] VALUES ([데이터]);

 

📌 VIEW의 수정

ALTER VIEW [뷰이름] AS
SELECT [컬럼이름]
FROM [테이블이름];

 

📌 VIEW의 삭제

DROP VIEW [뷰이름];
반응형