2021. 4. 8. 18:27ㆍOracle 공부
이번에는 view 에 대해서 알아 봅시다 ~
view
view는 하나의 가상테이블 이라고 생각하시면 되겠습니다.
원본 테이블이 있고, 이 원본 테이블을 그대로 가상테이블로 만들어도 되고, 가위로 필요한 부분만 싹뚝싹뚝 잘라내서 가상테이블로 만들어도 됩니다.
view는 원본 테이블의 필요한 부분을 싹뚝싹뚝 잘라내서, 그 테이블을 가지고 계속 뭔가를 하고 싶을 때 !
이럴때, 많이 사용합니다.
view는 조회에 이점을 가집니다.
뷰를 이용해서 데이터에 접근하면 원본데이터는 안전하게 보호할 수 있습니다.
뷰는 계정에 생성권한이 있어야 만들 수 있습니다.
※ 사용자 권한 확인
GRANTED_ROLE 에 나와있는 걸 보면 되는데, resourece는 거의 다 되는거라고 보면 됩니다
단순뷰
단순뷰는 원본 테이블이 1개인 것을 의미합니다.
※ CREATE OR REPLACE VIEW 만들뷰이름 AS 서브쿼리;
OR REPLACE 는 수정하겠다 인데요, view 를 생성할 때는 생략해도 됩니다.
AS 뒤에 서브쿼리를 이용해서 원하는 행을 잘라서 옵니다.
※ 주의 - 여러개의 속성을 가지는 값(함수)은 AS를 사용 해주어야 합니다.
※ ex ) first_name || ' ' || last_name , 그룹함수, CONCAT 등등....
만든 뷰를 확인하는 방법은 SELECT 를 사용하면 됩니다.
복합뷰
복합뷰는 원본 테이블이 여러개 인 것을 의미합니다.
서브쿼리에 여러개의 테이블들의 속성(Column)을 가지도록 해주면 됩니다.
JOIN을 사용해서 여러개의 테이블의 속성들을 가져왔습니다.
뷰의 장점은 지금 위의 서브쿼리문을 "하나의 가상 테이블로 만들어 준 다는 것" 입니다.
그래서, 뷰에 바로 조건이나 정렬을 사용해주면 됩니다.
뷰를 만들지 않고, 정렬을 한다고 생각해 보시면... 끔찍하죠? 매번 뭐 해줄때마다 조인을 해야 됩니다.
그런데, 뷰가 있으면? 그냥 뷰만 써주면 되잔아요 ㅎㅎ
뷰의 수정
뷰를 수정하는 건, 만들 때와 똑같이 해주면 됩니다.
OR REPLACE 를 붙여서.
※ 뷰를 적절하게 사용하면, 복잡한 SQL문을 간단하게 변경할 수 있다는게 가장 큰 장점 입니다 !
뷰의 삭제
뷰를 삭제할 때는, DROP VIEW 를 써주면 됩니다.
뷰에 데이터 추가
뷰에 데이터를 추가할 경우, 원본 테이블에도 반영이 되는데요.
뷰는 데이터를 추가하기가 까다롭습니다.
- 원본 테이블에 NOT NULL 속성이 있었다면, 해당하는 속성을 뷰가 가지고 있어야 합니다.
- 복합뷰의 경우에는 여러개의 테이블에 한번에 데이터를 추가할 수 없기 때문에 불가능 합니다.
뷰에 제약 조건 추가
뷰를 만들 때, 뷰에 제약 조건을 줄 수 있습니다.
- with check option -> where절 컬럼의 수정을 막는 제약
생성
수정
- with read only -> 오직 SELECT만 사용 가능
★ 뷰의 규칙 정리 ★
- 단순 뷰에서 DML연산을 수행할 수 있다
- 뷰가 그룹함수, GROUP BY, DISTINCT 를 포함한다면 행을 제거할 수 없다.
- 뷰가 위의 행 제거 할수 없는 조건과, 표현식으로 정의된 열, ROWNUM 의사열은 수정할 수 없다.
- 뷰가 위의 행제거 와 수정할 수 없는 조건, 뷰에 의해 선택되지 않은 NOT NULL 열이 기본 테이블에 있을 때는 삭제할 수 없다.
뷰는 가상테이블 이기 때문에, 만든 뷰를 FROM 에 넣어도 됩니다. 굳이 그렇게 하진 않고 인라인 뷰를 사용합니다.
저희가 서브쿼리로 사용하던 "인라인 뷰" 도 "뷰" 입니다.
이렇게, 뷰에 대해서 알아 보았습니다.
고생하셨습니다.
'Oracle 공부' 카테고리의 다른 글
Day38 - index (0) | 2021.04.08 |
---|---|
Day38 - squence (0) | 2021.04.08 |
Day37 - 제약조건 (0) | 2021.04.07 |
Day37 - DDL (테이블 생성, 테이블 변경, 테이블 삭제) (0) | 2021.04.07 |
Day37 - TCL ( COMMIT, ROLLBACK, SAVEPOINT) (0) | 2021.04.07 |