오라클의 view 는
단순뷰, 복합뷰로 나뉘어집니다.
**중요**
단순뷰 =
하나의 테이블로 만들어진 뷰로 DML이 가능합니다. 그룹함수, distinct 사용이 불가합니다.
복합뷰 =
여러개의 테이블로 만들어진 뷰입니다. 예를 들면 Join 이 될수가 있지요
하지만 DML이 불가능합니다. 그룹함수, distinct 사용이 가능합니다.
단순뷰 |
복합뷰 |
하나의 테이블로 생성 | 여러개의 테이블로 생성 |
그룹 함수의 사용이 불가능 | 그룹함수의 사용이 가능 |
distinct 사용이 불가능 | distinct 사용이 가능 |
DML 사용이 가능 | DML 사용이 불가능 |
단순뷰는 DML이 가능하다 하지만 예외 조항이있다.
1. delete가 안되는 경우
공통=> {그룹함수를 사용하거나, group by, distinct를 사용한 경우}
2. insert, update가 안되는 경우
공통=> {그룹함수를 사용하거나, group by, distinct를 사용한 경우, 별칭부여를 하였거나 계산함수를 사용한 경우 즉 가상필드를 사용한 경우, select, rownum}
핵심포인트
존재하지 않은 가상필드를 사용->insert,update,delete 실행이 안된다.
**중요**
미리 만들어 놓은 b_emp5 테이블에서 -> DML (데이터 수정)
뷰를 만든다.
그리고 여기서
문제 1번
부서번호가 30인 사원의 이름, 급여, 부서번호만 보여주는 뷰를 작성 하라. 뷰 이름은(V_30)
해설_
그리고 뷰를 만들때의 조건이 없고 단순히 뷰를 만들어라 라고한다면, or replace 를 사용 하던지 기본 법을 사용하던지 상관이없다. 하지만 조건이 있다면 반드시 조건대로 해야한다.
cerSQL> create view v_30 as select ename,sal,deptno from b_emp5
2 where deptno=30;
뷰가 생성되었습니다.
SQL> select * from v_30;
ENAME SAL DEPTNO
---------- ---------- ----------
ALLEN 1600 30 //해당 사원의 1개월 감봉(기존 sal 값을 1600->0으로)
WARD 1250 30
MARTIN 1250 30
BLAKE 2850 30
TURNER 1500 30
JAMES 950 30
6 개의 행이 선택되었습니다.
우선 뷰를 생성하였다. 30번 b_emp5 테이블에서 30번 부서의 데이터만 생성된 내용,
그리고 위의 뷰 데이터를 수정해야한다. 예를들어 알렌의 급여를 감봉을 하게된다면,,,
수정 형식은
1)
update 변경시킬 테이블명 set 변경할 필드명 = 값,,, where 조건식
============
뷰이름
참고_(기본적으로 insert delete select 는 기본적으로 숙지를 하고있어야 한다.)
정답_
SQL> update v_30 set sal=0 where ename='ALLEN'; //필드명을 설정하고, where 뒤에 수정할 데이터를 지정한다.
1 행이 갱신되었습니다.
SQL> select * from v_30; //변경이 됬는지 확인하기위해 사용된 호출 명령어
ENAME SAL DEPTNO
---------- ---------- ----------
ALLEN 0 30
WARD 1250 30
MARTIN 1250 30
BLAKE 2850 30
TURNER 1500 30
JAMES 950 30
6 개의 행이 선택되었습니다.
부록_
수정을 잘못하여, 원래 상태로 다시 되돌려야하는 상황이 주어질수있기때문에 실행 취소에대한 대비도 해야한다.
이때의 명령어는 sql> rollback;
위의 명령어는 [insert,update,delete] 즉 DML만 가능하다.
하지만 "롤백" 명령어는 그 직전 작성한지 얼마 안된 데이터만 실행 취소가 가능하다.!
SQL> rollback;
롤백이 완료되었습니다.
SQL> select * from v_30;
ENAME SAL DEPTNO
---------- ---------- ----------
ALLEN 1600 30
WARD 1250 30
MARTIN 1250 30
BLAKE 2850 30
TURNER 1500 30
JAMES 950 30
6 개의 행이 선택되었습니다.
'Oracle > View' 카테고리의 다른 글
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 페이징 처리 기법 1 (0) | 2019.07.02 |
---|---|
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 4 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 3 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 2 서브쿼리 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 1 조인 (0) | 2019.07.02 |
댓글