데이터에 안전하게 접근 하는 방법, 뷰.
VIEW.
뷰는 실제로 존재하는 테이블과는 조금 차이가 있다. 테이블은 데이터를 갖고 있지만, 뷰는 갖고 있지 않다. 그리고 조인 연산으로 데이터를 가져오게 되면, 식의 조건에 맞는 테이블의 형태로 데이터를 보여주게 된다. 이렇게 조인과 셀렉트 연산으로 보여지는 가상의 테이블을 영구적으로 만들어 놓는 것을 뷰라고 정의할 수 있다.
뷰 생성하기.
뷰를 생성하는 방법은 테이블을 만드는 방법과 비슷하다.
CREATE OR REPLACE VIEW 뷰이름;
두번째의 쿼리는 동일한 이름의 뷰가 이미 정의되어 있을 경우 이전의 것에 그대로 덮어서 생성을 하게 된다. 이전것과는 상관없이 무조건 생성하는 것이다. 하지만 이것은 단지 뷰만 만들어 놓으것이다. 어떠한 형태와 구조도 없고, 당연히 데이터도 없다. 아직은 아무런 쓸모가 없는 것이다. 이뷰에 데이터를 넣어주어야 뷰로서의 기능을 발휘하게 된다.
위의 쿼리문을 실행하게 되면, 대상테이블에 있던 데이터가 새로운 뷰 안에 포함되게 된다. 하지만, 이렇게 테이블을 그대로 뷰로 옮겨놓는 것은 뷰의 가능성을 무시하는 처사라고 할 수있다. 일반적으로는 AS 절 이후의 셀렉트문을 여러개의 테이블에서 조인을 하거나, 원하는 컬럼들만 추출하여 새로운 테이블을 만든것과 같은 효과를 주어 사용을 하게 된다.
SELECT e.employee_id, e.last_name, e.salary, e.department_id, d.department_name
FROM employee e, department d WHERE e.department_id = d.department_id
ORDER BY salary DESC;
위와 같은 방법으로 뷰를 생성해 놓으면 다시는 부서의 이름을 얻어내기 위해 조인을 하는 수고는 덜게 될 것이다.
인라인 뷰의 사용.
테이블을 조인하기에도 적당하지 않고, 뷰를 만들기에도 한번만 사요을 해야 하는 것이 있다면... 서브쿼리와 비슷한 형태로 인라인 뷰 기능을 이용하면 된다. 서브 쿼리는 어떠한 결과 값을 반환하여 WHERE, HAVING 과 같은 조건절에 사용되는 반면, 인라인뷰는 조건에 맞는 테이블 자체를 반환하기 때문에 FROM 절에 값으로 사용할 수 있다.
FROM (SELECT employee_id, last_name, hire_date, FROM employee ORDER BY hire_date)
WHERE employee_id <= 50;
인라인 뷰는 위와 같은 형식으로 사용하는 것이 가능하다. 조금더 발전적인 형태로는 인라인 뷰와, 서브쿼리, 조인연산을 적절하게 사용하게 된다면, 원하는 데이터라면 어떠한 것이라도 가져오는 것이 가능할 것이다.
'Dev Center > DB + JSP start' 카테고리의 다른 글
데이터를 효과적으로 관리하기 위한 특별한 기능(ROWNUM, SEQUENCE, INDEX) (0) | 2010.08.26 |
---|---|
데이터에 안전하게 접근 하는 방법, 뷰. (0) | 2010.08.25 |
데이터베이스의 작업 단위 트렌잭션 & 테이블 복사 (0) | 2010.08.24 |
이미 만들어진 테이블. (0) | 2010.08.23 |
좀더 다양한 방법으로 조인한기.(셀프조인, 서브쿼리) (0) | 2010.08.22 |
기본적인 조인연산. (0) | 2010.08.21 |
댓글을 달아 주세요