본문 바로가기
Programming/Database

[Database] 뷰, VIEW

by 공부합시다홍아 2023. 12. 12.
 

[Database] 제약조건

[Database] Table, 테이블 [Database] 트랜잭션, Transaction https://hong-study.tistory.com/294 트랜잭션 ( Transaction ) ● 논리적인 작업의 단위로, 분리되어서는 안될 작업의 단위이다. ▶ 시작은 실행 가능한 첫 번

hong-study.tistory.com


뷰, VIEW

뷰(VIEW)는 테이블 또는 다른 뷰를 기초로 하는 논리적 테이블이다.

● 접근 제어를 통한 자동 보안이 제공되므로 데이터베이스 액세스를 제한하기 위해 사용한다.
● 복잡한 질의를 쉽게 만들어주기 때문에 사용자의 데이터 관리를 용이하게 한다.
● 논리적 데이터 독립성을 제공하기 때문에 데이터의 독립성을 허용한다.
● 동일한 데이터의 다른 뷰를 나타낼 수 있기에 동일 데이터에 동시에 여러 사용자의 상이한 응용이나 요구를 지원한다.

뷰(VIEW)의 정의
● 하나 이상의 테이블에서 원하는 모든 데이터를 선택하여, 그들을 사용자 정의하여 나타낸 것이다.

단순 뷰 : 한 개의 원본 테이블을 사용해서 생성
복합 뷰 : 두 개 이상의 이본 테이블에 의해 생성 ( 조인 )


뷰를 만들기 위해서 뷰를 생성할 수 있는 권한이 있어야한다. 
현재 접속한 사용자에게 부여된 롤(ROLE)을 확인하거나, 권한을 확인하여 뷰 생성 권한여부를 조사한다.


뷰 (VIEW) 작성 방법
  • CREATE VIEW 문장 내에서 서브쿼리를 작성한다.
  • 서브쿼리는 복합 SELECT 구문을 포함할 수 있다.

  • 서브쿼리에서 열 별칭을 포함함으로써 열 이름을 제어할 수 있따.
  • 서브쿼리의 SELECT절에서 수식을 사용할 경우에는 SELECT 절에 열 병칭을 사용하거나 
    CREATE VIEW 절에 열 이름을 포함해야 한다.
CREATE OR REPLACE VIEW VIEW_EMP
AS (
        SELECT EMPLOYEE_ID AS EMP_ID,
               FIRST_NAME || ' ' || LAST_NAME AS NAME,
               JOB_ID,
               SALARY
        FROM EMPLOYEES
        WHERE DEPARTMENT_ID = 60
);
CREATE OR REPLACE VIEW VIEW_EMP_JOBS
AS (
        SELECT * FROM EMPLOYEES E
        JOIN DEPARTMENTS D
        ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
        LEFT JOIN LOCATIONS L
        ON D.LOCATION_ID = L.LOCATION_ID
        LEFT JOIN JOBS J
        ON E.JOB_ID = J.JOB_ID
);
여러 JOIN문을 사용한 VIEW 구문
CREATE OR REPLACE VIEW VIEW_EMP_JOB 
AS (
        SELECT 
                E.EMPLOYEE_ID,
                FIRST_NAME || ' ' || LAST_NAME AS NAME,
                J.JOB_TITLE,
                D.DEPARTMENT_NAME,
                L.STREET_ADDRESS
        FROM EMPLOYEES E
        JOIN DEPARTMENTS D
        ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
        LEFT JOIN LOCATIONS L
        ON D.LOCATION_ID = L.LOCATION_ID
        LEFT JOIN JOBS J
        ON E.JOB_ID = J.JOB_ID
        WHERE D.DEPARTMENT_ID = 60)
ORDER BY MAX_SALARY DESC;
뷰(VIEW)의 수정 방법
  • CREATE OR REPLACE VIEW 절을 사용하여 뷰를 수정한다.
  • CREATE VIEW 절에서 열 별칭들은 서브쿼리에서의 열과 도일한 순서로 나열된다.

OR REPLACE 옵션은 비록 이 이름이 이미 존재할지라도 뷰가 생성될 수 있도록 해주므로, 그 소유자에 대한
이전 뷰 버전을 새로운 뷰 구문으로 대체한다.


뷰(VIEW)의 삭제 방법
  • 뷰는 데이터베이스에서 기본 테이블을 기반으로 하기 때문에 데이터 손실 없이 뷰를 삭제한다.

● 뷰를 제거하기 위해 DROP VIEW 문장을 사용한다.
● 이 문장은 데이터베이스에서 뷰 정의를 제거한다. 뷰 삭제는 뷰가 만들어진 기본 테이블에 영향이 없다.
● 그 뷰에 기초하여 만들어진 뷰 또는 다른 어플리케이션은 무효화된다.
뷰를 만든사람 또는 DROP ANY VIEW 권한을 가진 사람만 뷰를 제거 할 수 있다.

뷰의 규칙 

● 단순 뷰에서 DML 연산을 수행할 수 있다.

● 뷰가 다음을 포함한다면 행을 제거할 수 없다.
    > 그룹함수
    > GROUP BY 절
    > DISTINCT 키워드

● 뷰가 다음을 포함한다면 데이터를 수정할 수 없다.
   > 위의 행 제거 할 수 없는 조건
   > 표현식으로 정의된 열
   > ROWNUM 의사열

● 뷰가 다음을 포함한다면 데이터를 추가할 수 없다.
    > 위의 행 제거와 수정 할 수 없는 조건
    > 뷰에 의해 선택되지 않은 NOT NULL 열이 기본 테이블에 있을 때 
728x90

'Programming > Database' 카테고리의 다른 글

[Database] INDEX  (0) 2023.12.13
[Database] 시퀀스 , SEQUENCE  (0) 2023.12.12
[Database] 제약조건  (1) 2023.12.12
[Database] Table, 테이블  (1) 2023.12.11
[Database] 트랜잭션, Transaction  (0) 2023.12.11