뷰 관리

데이터베이스 설계

Lis Sulmont

Curriculum Manager

복잡한 뷰 생성

  • 집계: SUM(), AVG(), COUNT(), MIN(), MAX(), GROUP BY
  • 조인: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
  • 조건: WHERE, HAVING, UNIQUE, NOT NULL, AND, OR, >, <
데이터베이스 설계

뷰에 대한 접근 권한 부여 및 취소

GRANT privilege(s) 또는 REVOKE privilege(s)

ON object

TO role 또는 FROM role

  • 권한: SELECT, INSERT, UPDATE, DELETE
  • 객체: 테이블, 뷰, 스키마 등
  • 역할: 데이터베이스 사용자 또는 사용자 그룹
데이터베이스 설계

권한 부여 및 취소 예시

$$

GRANT UPDATE ON ratings TO PUBLIC;  

$$

REVOKE INSERT ON films FROM db_user;
데이터베이스 설계

뷰 업데이트

UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';

모든 뷰가 업데이트 가능한 것은 아닙니다

  • 뷰가 하나의 테이블로 구성됨
  • 윈도우 함수 또는 집계 함수를 사용하지 않음
1 https://www.postgresql.org/docs/9.5/sql-update.html
데이터베이스 설계

뷰에 데이터 삽입

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

모든 뷰에 삽입할 수 있는 것은 아닙니다

1 https://www.postgresql.org/docs/9.5/sql-insert.html
데이터베이스 설계

뷰에 데이터 삽입

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

모든 뷰에 삽입할 수 있는 것은 아닙니다

핵심: 뷰를 통한 데이터 수정은 피하십시오

1 https://www.postgresql.org/docs/9.5/sql-insert.html
데이터베이스 설계

뷰 삭제

DROP VIEW view_name [ CASCADE | RESTRICT ];
  • RESTRICT (기본값): 뷰에 의존하는 객체가 있으면 오류 반환
  • CASCADE: 뷰와 해당 뷰에 의존하는 모든 객체를 함께 삭제
데이터베이스 설계

뷰 재정의

CREATE OR REPLACE VIEW view_name AS new_query
  • view_name인 뷰가 존재하면 교체됨
  • new_query는 기존 쿼리와 동일한 열 이름, 순서, 데이터 타입을 반환해야 함
  • 열 출력값은 달라도 됨
  • 새 열은 끝에 추가 가능

조건을 충족할 수 없는 경우, 기존 뷰를 삭제하고 새로 생성하십시오

1 https://www.postgresql.org/docs/9.2/sql-createview.html
데이터베이스 설계

뷰 변경

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO new_owner
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
1 https://www.postgresql.org/docs/9.2/sql-alterview.html
데이터베이스 설계

연습해 봅시다!

데이터베이스 설계

Preparing Video For Download...