[오라클]/SQL

view

broship 2020. 12. 26. 13:32

view: 일부 테이블 추출개념, 테이블 소스는 볼수 없고 문장만 볼수 있기때문에 보안성이 강함

 

- view 만들기:

CREATE OR REPLACE VIEW view_12000 AS
    SELECT *
    FROM employees
    WHERE salary>12000;
--view_12000가 없으면 생성, 있으면 수정
--view를 수정 가능하게 하기 위해 무조건 CREATE OR REPLACE 사용

 

Q) 부서별로 최소봉금, 최대봉급, 평균봉급 view만들기(출력은 부서명,min,max,avg)

CREATE OR REPLACE VIEW salary_view AS
SELECT department_id 부서명, min(salary) min, max(salary) max, avg(salary) avg
FROM employees
GROUP BY department_id
ORDER BY 1;
SELECT * FROM salary_view;

 

- view 생성할때 쓴 select 문 보는 방법

SELECT text FROM user_views
WHERE view_name = 'SALARY_VIEW';

 

- view를 수정하면 view와 함께 원본 데이터가 수정됨, 원본 테이블의 데이터가 변경되는걸 막기 위한 옵션이 있음

--WITH CHECK OPTION: manager_id 같이 조건으로 준 칼럼은 수정 불가
CREATE OR REPLACE VIEW emp_viewe_mid_121 AS
SELECT * FROM employees
WHERE manager_id=121
WITH CHECK OPTION;
SELECT * FROM emp_viewe_mid_121;
--check
UPDATE emp_viewe_mid_121 SET manager_id=300 WHERE employee_id=131;

--WITH READ ONLY: 모든 칼럼 수정 불가
CREATE OR REPLACE VIEW emp_viewe_mid_121 AS
SELECT * FROM employees
WHERE manager_id=121
WITH READ ONLY;
UPDATE emp_viewe_mid_121 SET manager_id=300 WHERE employee_id=131;

 

Q) employees 테이블에서 급여가 15000인 이상인 사원들의 이름과 급여만을 저장하는 view를 만드시오 (단, 뷰 이름이 있으면 지금 만든 뷰로 이름이 대체 가능해야 하고 만일 급여가 해당 조건이 아닌 경우를 insert하려 할경우 처리가 안되어야한다)

CREATE OR REPLACE VIEW emp_15000 AS
SELECT first_name, salary
FROM employees
WHERE salary >= 15000
WITH CHECK OPTION;
SELECT * FROM emp_15000;

'[오라클] > SQL' 카테고리의 다른 글

sequence, index  (0) 2020.12.26
제약조건  (0) 2020.12.26
decode  (0) 2020.12.26
dictionary  (0) 2020.12.26
SAVEPOINT  (0) 2020.12.26