뷰, 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 |