티스토리 뷰

프로그래밍/데이터베이스

VIEW

안싱미 2016. 2. 18. 10:54
뷰(View)

테이블은 실제로 데이터를 가지고 있는 반면, 뷰(View)는 실제 데이터를 가지고 있지 않다. 뷰는 단지 뷰 정의(View Definition)만을 가지고 있다. 질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성(Rewrite)하여 질의를 수행한다. 뷰는 실제 데이터를 가지고 있지 않지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블(Virtual Table)이라고도 한다. 뷰는 아래 표와 같은 장점을 갖는다.

뷰의장점 설명
독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
보안성 직원의 급여정보와 같이 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 컬럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.

 

그러나 실무에서는 뷰를 만들어서 쓰는 곳이 단 한곳도 없다. 실무에서는 테이블 컬럼이 수시로 바뀐다. 그럴때마다 뷰를 지웠다가 다시 만들어야 하기 때문에 실무에서는 비효율적이라고 판단한다.

아래와 같이 뷰에 있는 SQL 내용을 복사에서 FROM 절 안에 넣으면 동일한 결과를 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT  *
FROM    (
            SELECT
            e.employee_id,
            e.job_id,
            e.manager_id,
            e.department_id,
            d.location_id,
            l.country_id,
            e.first_name,
            e.last_name,
            e.salary,
            e.commission_pct,
            d.department_name,
            j.job_title,
            l.city,
            l.state_province,
            c.country_name,
            r.region_name
          FROM
            employees e,
            departments d,
            jobs j,
            locations l,
            countries c,
            regions r
          WHERE e.department_id = d.department_id
            AND d.location_id = l.location_id
            AND l.country_id = c.country_id
            AND c.region_id = r.region_id
            AND j.job_id = e.job_id
 
        )
;
cs

 

 


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함