뷰 제약조건
- [with check option]
deptno=30인 데이터만 조회되어 뷰가 생성된다.
데이터가 추가, 갱신 될때도 이 제약조건에 맞는 데이터만 적용된다.이 조건은 테이블과는 아무 상관없다.
SQL> create or replace view v_emp30
as select * from b_emp5
where deptno=30
with check option constraint v_emp30_ck;
- [with read only]
뷰를 통해서는 연결된 기본 테이블의 어떤 칼럼에 대해서도 내용을 절대 변경할 수 없도록 한다.
insert, update, delete 불가능
SQL> create or replace view v_dept30
as select deptno,dname from dept
where deptno=30
with read only;
뷰의 종류
단순뷰 | 하나의 테이블로 만들어진 뷰 dml(insert,update,delete)사용 가능(예외있음)/ 그룹함수,distinct 사용불가(그룹함수의 경우 별칭 부여하면 가능) |
복합뷰 | 여러개의 테이블로 만들어진 뷰(ex 조인) dml(insert,update,delete)사용 불가/ 그룹함수,disticnt 사용가능 |
단순뷰
단순뷰에서 기본적으로 그룹함수는 사용 불가능 하지만, 별칭을 사용한다면 가능하다
SQL> create or replace view v_maxsal
as select deptno,max(sal)
from emp
group by deptno;
as select deptno,max(sal)
*
2행에 오류:
ORA-00998: 이 식은 열의 별명과 함께 지정해야 합니다
=> 가상필드는 필드가 존재하지 않는 필드이므로 필드로 생성(별칭부여)하지 않는 이상 가져올 수 없다.
SQL> create or replace view v_maxsal
as select deptno,max(sal) “최대급여”
from emp
group by deptno;
뷰가 생성되었습니다.
**예외**
단순뷰는 dml이 가능하지만 예외가 있다.
뷰 안에 그룹함수, group by,distinct를 사용한 경우 delete,insert,update가 되지 않는다.
또한 뷰 안에 별칭을 부여한 가상필드가 있는 경우 insert,update가 되지 않는다.
뷰에서 insert,update,delete 구문을 적용하려면 실제 물리적인 필드가 존재해야한다.
복합뷰
조인을 사용하여 복합뷰 생성
SQL> create or replace view v_dname
as select e.ename, d.dname
from emp e, dept d
where e.deptno=d.deptno;
뷰가 생성되었습니다.
SQL> select * from v_dname;
ENAME DNAME
---------- --------------
CLARK ACCOUNTING
...
MARTIN SALES
서브쿼리를 사용하여 복합뷰 생성
SQL> create or replace view v_smith
as select ename, sal, deptno from emp
where sal >(select sal from emp
where ename='SMITH');
--이어서 뷰에 관한 포스팅 작성할 예정입니다.
'DB(ORACLE)' 카테고리의 다른 글
[Oracle]db모델링 툴 - exerd 30일 평가판 사용하기 (0) | 2021.03.19 |
---|---|
[Oracle]오라클 뷰 동작원리/ 데이터딕셔너리/ 인라인 뷰 (0) | 2020.12.30 |
[Oracle]오라클 뷰(view)개념, 뷰 생성/수정/삭제 (0) | 2020.12.24 |
[Oracle]오라클 백업테이블생성, 테이블 복사, 스키마 복사 (0) | 2020.12.23 |
[Oracle]오라클 데이터 딕셔너리, 제약조건 (0) | 2020.12.23 |