1. < VIEW 뷰 >
SELECT문 (쿼리문)을 저장해둘 수 있는 객체
(자주 쓰는 긴 SELEC문 저장해두면 매번 긴 SELECT문 다시 기술할 필요 없음)
임시테이블 같은 존재 (실제 데이터가 담겨있는건 아님! -> 논리적인 테이블
✅ VIEW를 생성하기 위해서는 계정에 권한 부여 해야함
GRANT CREATE VIEW TO BR; --> 관리자계정 실행
1.1.
1.2. 1. VIEW 생성
[기본표현법]
CREATE [OR REPLACE] VIEW 뷰명
AS 저장시키고자하는 쿼리문
[OR REPLACE] : 뷰 생성시 중복된 이름의 뷰가 없으면 새로이 뷰를 생성
중복된 이름의 뷰가 있다면 해당 뷰를 변경(갱신)하는 옵션
CREATE VIEW VW_EMPLOYEE
AS SELECT EMP_ID,EMP_NAME,DEPT_TITLE,SALARY,NATIONAL_NAME,BONUS
FROM EMPLOYEE E
JOIN DEPARTMENT D ON(E.DEPT_CODE = D.DEPT_ID)
JOIN LOCATION L ON (D.LOCATION_ID = L.LOCAL_CODE)
JOIN NATIONAL N ON (L.NATIONAL_CODE = N.NATIONAL_CODE);
- VIEW 수정시에는 CREATE OR REPLACE VIEW 구문을 사용하면 됨
CREATE OR REPLACE VIEW VW_EMPLOYEE
AS SELECT EMP_ID,EMP_NAME,DEPT_TITLE,SALARY,NATIONAL_NAME,SALARY
FROM EMPLOYEE E
JOIN DEPARTMENT D ON(E.DEPT_CODE = D.DEPT_ID)
JOIN LOCATION L ON (D.LOCATION_ID = L.LOCAL_CODE)
JOIN NATIONAL N ON (L.NATIONAL_CODE = N.NATIONAL_CODE);
1.3. 2. 뷰 컬럼에 별칭 부여
서브쿼리 SELECT절에 산술연술식, 함수식을 기술했을 경우 반드시 별칭을 지정해야함
CREATE OR REPLACE VIEW VW_EMP_JOB
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')
,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
FROM EMPLOYEE
JOIN JOB USING (JOB_CODE);
>> 오류 : 산술연산식, 함수식에 별칭을 부여하지 않았을 경우 뷰 생성 불가
별칭 부여 방법 1)
CREATE OR REPLACE VIEW VW_EMP_JOB
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')"성별"
,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)"근무년수"
FROM EMPLOYEE
JOIN JOB USING (JOB_CODE);
별칭 부여 방법 2) 단, 모든 컬럼에 대한 별칭을 작성해야함
CREATE OR REPLACE VIEW VW_EMP_JOB(사번,이름,직급명,성별,근무년수)
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')
,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
FROM EMPLOYEE
JOIN JOB USING (JOB_CODE);
>> 별칭 부여시 SELECT절에서 사용 가능
SELECT 이름,직급명
FROM VW_EMP_JOB
WHERE 근무년수 >= 20;
SELECT *
FROM VW_EMP_JOB
WHERE 성별 = '여';
-- 뷰 삭제 (DROP VIEW)
DROP VIEW VW_EMP_JOB;
'ORACLE' 카테고리의 다른 글
ORACLE 11. OBJECT (VIEW) _ VIEW 옵션 (0) | 2022.11.24 |
---|---|
ORACLE 11. OBJECT (VIEW) _ DML (0) | 2022.11.24 |
ORACLE 10. TCL (COMMIT, ROLLBACK,SAVE POINT) (0) | 2022.11.24 |
ORACLE 09. DCL(GRANT, REVOKE) (0) | 2022.11.24 |
ORACLE 08. DDL (ALTER, DROP) (0) | 2022.11.23 |