SQL

SQL의 VIEW(뷰)에 대해서 알아보자! (feat. 기타 스키마 객체)

개발 일기 2021. 7. 19. 22:51

안녕하세요!!

 

오늘은 SQL의 기타 스키마 객체중 VIEW(뷰)에 대해 공부해보겠습니다.

 

VIEW(뷰)란?

 - 테이블 또는 다른 뷰를 기초로 하는 논리적 테이블

 - 뷰는 그 자체로서 소유하는 데이터는 없지만, 창문처럼 창문을 통해 어떤 데이터를 보거나 변경할 수 있다.

 - 뷰에서 참조하는 테이블을 기본 테이블(Base Table)이라고 한다.

 

 

VIEW(뷰)의 사용 목적

 - 데이터베이스에서 선택적으로 데이터를 보여줄 수 있기 때문에, 데이터베이스에 대한 접근을 제한 할 수 있다.

 - 복잡한 질의로부터 결과를 검색하기 위한 단순한 질의를 만들 수 있다.

 - 사용자와 애플리케이션 프로그램에 대한 데이터 독립성을 제공한다.

 - 하나의 뷰는 여러개의 테이블로부터 데이터를 검색하는데 사용 가능하다.

 

 

VIEW(뷰)의 작성 시 주의 할 점

 - subquery는 조인, set 연산, 서브쿼리가 포함된 복잡한 SELECT 문이 정의 가능하다.

 - subquery에는 ORDER BY 절을 사용 할 수 없다. ORDER BY를 사용하려면 검색 시 뷰에 기술한다.

 - VIEW를 수정하기 위해서는 CREATE OR REPLACE를 이용한다.

 - CREATE VIEW 권한을 가져야 뷰를 생성 할 수 있다.

  => 권한 부여 SQL : GRANT CREATE VIEW TO SCOTT;

 

 

VIEW(뷰) 작성 예시

 

1. 단순 VIEW(테이블 1개)

dept 테이블에서 deptno=10의 deptno, dname, loc를 가진 dept_view 뷰 생성

 

2. 복합 VIEW(테이블 여러개)

emp 테이블과 dept 테이블을 조인하여 emp_dept_view 뷰 객체 생성

 


 

VIEW(뷰)에서 DML 작업

 - 단순 뷰에서 DML 연산을 수행 가능하다.

 - 뷰가 다음을 포함한다면 행을 제거할 수 없다.

   - 그룹함수

   - GROUP BY 절

   - DISTINCT 키워드

 - 뷰가 다음을 포함한다면 데이터를 수정할 수 없다.

   - 위의 임의의 조건

   - ROWNUM 의사열

   - 표현식으로 정의된 열 (예 : SAL * 12)

 - 뷰가 다음을 포함한다면 데이터를 추가할 수 없다.

   - 위의 임의의 조건

   - 뷰에 의해 선택되지 않은 NOT NULL열이 기본 테이블에 있을 때

 

 

VIEW(뷰) DML 작성 예시

 

1. INSERT(PK 컬럼 포함 유/무에 따른 비교)

PK(empno)컬럼을 지정한 테이블과 지정하지 않은 테이블 두가지 생성

 

PK가 설정되지 않은 데이터는 insert 시 오류남(61번 라인)

 

2. UPDATE

emp_view 뷰에서 empno=8989의 sal 값 업데이트

 

3. DELETE

emp_view 뷰에서 empno=8989 delete

 

 

VIEW에 대해서 공부했습니다.

 

감사합니다.