VIEW
실체가 없는 가상테이블이며, c언어에서의 pointer 와 비슷한 역할을 수행한다.
한개의 view로 여러개의 table의 데이터를 검색하고 확인하는것이 가능하다는 장점이 있으며,
Oracle 개발자들은 view를 많이 만들어 놓고 사용하는 편이라고 한다.
데이터추가 수정에 제한을 설정할 수 있으며, null을 허용하지 않는 컬럼은 반드시 추가해주어야한다.
/*
view : 가상테이블 vue
실체가 없는 테이블.
실제 저장되는 것이 아니다 => pointer
table <- view 뷰를 통해서 table을 볼 수 있다. 창틀과 같은 존재?
한개의 view로 여러개의 table의 데이터를 검색하는것이 가능하다.
오라클 개발자는 view를 많이 만들어 놓고 사용한다. 신용이 높고 검색속도가 빠르다. 제한을 설정할 수 있다.
뷰를 만들때 null을 허용하지 않는 컬럼을 넣어주어야한다.
*/
VIEW 생성 :
CREATE VIEW UB_TEST_01(
job_id, job_title, min_salary
)AS
SELECT job_id, job_title, min_salary
FROM jobs; -- VIEW 생성
SELECT *
FROM UB_TEST_01; -- VIEW를 통해서 바라본 데이터
INSERT INTO UB_TEST_01
VALUES ('DEVELOPER', '개발자', 10000); -- VIEW 데이터를 넣음.
SELECT *
FROM jobs; -- VIEW에 데이터를 추가 하였으나, 실제 테이블 jobs 에도 데이터가 추가된것을 확인 할 수 있음.
ROLLBACK;
DELETE FROM UB_TEST_01 WHERE job_title = '개발자';
VIEW 생성 : 읽기전용
-- READONLY
CREATE OR REPLACE VIEW EMPVIEW( -- OR REPLACE 해당테이블명 그대로 재정의.
"사원번호", "성", "이메일", "입사일", "업무", -- VIEW에서 COLUMN명 재정의.
CONSTRAINT PK_UB_EMP PRIMARY KEY("사원번호") DISABLE NOVALIDATE)
AS
SELECT employee_id, last_name, email, hire_date, job_id
FROM employees
WITH READ ONLY; -- 읽기만 가능 설정.
INSERT INTO empview
VALUES(400, 'kim', 'kim@naver.com', sysdate, 'IT_PROG');
-- 오류 발생 확인 cannot perform a DML operation on a read-only view
SELECT *
FROM EMPVIEW;
'Language > SQL' 카테고리의 다른 글
Oracle SQL Sequence, Index (시퀀스, 목차(색인)) (0) | 2019.12.26 |
---|---|
Oracle SQL DML : INSERT, UPDATE, DELETE (추가, 수정, 삭제) (0) | 2019.12.21 |
Oracle SQL DML : SELECT 05(SUB QUERY) (0) | 2019.12.21 |
Oracle SQL DML : SELECT 04(JOIN) (0) | 2019.12.21 |
Oracle SQL DML : SELECT 03(ORDER BY, GROUP BY, OVER ...) (0) | 2019.12.21 |