■ VIEW (뷰)
■ VIEW 란?
- 이미 특정한 데이터베이스 내에 존재하는 하나 이상의 테이블에서
사용자가 얻기 원하는 데이터들만을 정확하고 편하게 가져오기 위하여
사전에 원하는 컬럼들만 모아서 만들어놓은 가상의 테이블로 편의성 및 보안에 목적이 있다.
■ 형식 및 구조
CRAETE [OR REPLACE] VIEW 뷰이름
[(ALIAS[, ALIAS, ...])]
AS
서브쿼리(SUBQUERY)
[WITH CHECK OPTION]
[WITH READ ONLY]
■ VIEW 실습
--○ 뷰(VIEW) 생성 뷰 생성 권한이 있어야 생성 가능
SELECT E.FIRST_NAME, E.LAST_NAME, D.DEPARTMENT_NAME, L.CITY
, C.COUNTRY_NAME, R.REGION_NAME
FROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L, COUNTRIES C, REGIONS R
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID(+)
AND D.LOCATION_ID = L.LOCATION_ID
AND L.COUNTRY_ID = C.COUNTRY_ID
AND C.REGION_ID = R.REGION_ID;
--> 뷰로 만들 데이터 확인
CREATE OR REPLACE VIEW VIEW_EMPLOYEES
AS
SELECT E.FIRST_NAME, E.LAST_NAME, D.DEPARTMENT_NAME, L.CITY
, C.COUNTRY_NAME, R.REGION_NAME
FROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L, COUNTRIES C, REGIONS R
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID(+)
AND D.LOCATION_ID = L.LOCATION_ID
AND L.COUNTRY_ID = C.COUNTRY_ID
AND C.REGION_ID = R.REGION_ID;
--==>> View VIEW_EMPLOYEES이(가) 생성되었습니다.
--○ 뷰(VIEW) 조회
SELECT *
FROM VIEW_EMPLOYEES;
--○ 뷰(VIEW)의 구조 조회
DESC VIEW_EMPLOYEES;
--===>>
/*
이름 널? 유형
--------------- -------- ------------
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
DEPARTMENT_NAME VARCHAR2(30)
CITY NOT NULL VARCHAR2(30)
COUNTRY_NAME VARCHAR2(40)
REGION_NAME VARCHAR2(25)
*/
■ VIEW 소스 확인!
--○ 뷰(VIEW) 소스 확인 CHECK~!!!
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS
WHERE VIEW_NAME='VIEW_EMPLOYEES';
--==>>
/*
VIEW_EMPLOYEES
"SELECT E.FIRST_NAME, E.LAST_NAME, D.DEPARTMENT_NAME, L.CITY
, C.COUNTRY_NAME, R.REGION_NAME
FROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L, COUNTRIES C, REGIONS R
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID(+)
AND D.LOCATION_ID = L.LOCATION_ID
AND L.COUNTRY_ID = C.COUNTRY_ID
AND C.REGION_ID = R.REGION_ID"
*/