[MySQL] VIEW

사용이유

  • 보안 상 이유
  • 누군가가 테이블들을 조회하고자 할 때 미리 데이터를 정리해서 줄 수 있음
  • 카디션곱 등으로 디비에 영향을 끼칠 수 있으므로 이를 방지가능
  • DBA가 아닌 운영자나 개발자에게 효과적으로 데이터 조회를 가능토록함
  • 테이블간의 관계를 몰라도 됨
  • 성능
  • 쿼리의 컴파일 과정이 생략 되기 때문에 경제적
  • compiled query (prepared statement)
    • 메모리에 미리 전역변수로 띄워 놓는 것

생성 및 수정

  • 뷰를 수정하면 원본 테이블에 영향이 간다.
  • 왠만하면 수정의 목적으로는 사용하지 않는다.
CREATE VIEW <뷰 이름> AS
SELECT ...
;

SELECT * FROM <뷰 이름>;

UPDATE <뷰 이름> SET ...;

업데이트가 불가능한 뷰

  • 유니크하게 로우를 선택할 수 없는 경우 수정불가
  • 그룹함수를 써서 만든 뷰
  • by SUM, AVG...
  • UNION ALL
  • DISTINCT
  • GROUP BY
SELECT * FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = <스키마 이름>

...  VIEW_DEFINITION  ...  IS_UPDATABLE ...
...      ...          ...      YES <- 업데이트 가능한  

links

social