2011년 7월 20일 수요일

[Oracle.11]Database Object - View

Database Object
데이터베이스는 테이블뿐만 아니라 데이터를 저장하고 이를 활용하는 다양한 Object 를 제공하고 있다.
3. View
여러 테이블을 JOIN하여 질의할 때, JOIN하는 테이블의 수가 늘어나면 질의문의 길고 복잡해 진다. 이러한 질의문이 반복해서 쓰인다면 매번 질의문을 작성하는 것도 불편하지만, 유지보수에도 많은 어려움이 있을 것이다.
이렇게 자주 사용되는 질의문은 스크립트로 만들어 두거나, STORED PROCEDURE를 사용해서 데이터베이스 서버에 저장하고 필요할 때만 호출하여 사용하는 방법이 있다.
또 하나의 방법으로 작성된 질의문을 VIEW의 형태로 데이터베이스에 저장하는 방법을 생각해 볼 수 있다. 위 처럼 긴 질의문을 VIEW로 정의하여 사용한다면 소스 코드에서 사용되는 질의문은 간결해 지며, 자연적으로 코드의 양도 줄어들어 유지보수가 편리한 장점이 있다.
- 테이블을 관리, 참조하기 위한 가상의 테이블 이다.
 - DATA를 물리적이 아닌 논리적으로 갖는 집합. 절대로 물리적인 공간을 사용하지 않는다.
 - VIEW를 생성하면 SQL문장과 함께 Dictionary에 저장된다.
 - VIEW를 조회하면 Dictionary에 저장되어 있는 해당 view SQL문장을 이용하여 근간이 되는 테이블을 ACCESS한다.
1) VEW 생성
CREATE [OR REPLACE] VIEW 뷰이름 AS 쿼리;
OR REPLACE는 뷰이름이 존재하면 지금의 질의에 대한 정의로 대체하라는 의미이다. 뷰의 내용을 변경할 때 사용된다.
2) VIEW 조회
VIEW 조회 역시 일반 테이블을 조회 하듯이 조회 하면 된다. ( 가상테이블 )
3) VIEW 삭제
DROP VIEW 뷰이름;
4) VIEW 사용 목적
- 검색조건의 단순화, JOIN문장의 단순화 등 여러번 조회 하거나 유지보수를 위하여 VIEW를 만들어 사용한다.
- 미리 튜닝된 SQL문으로 VIEW를 생성하여 수행속도를 향상 시킬 수 있다.
- 보안관리를 위하여 VIEW를 생성하여 접근 권한 및 테이블의 일부 칼럼을 숨기고 보여줄 수 있다.
5) Inline View
SQL > SELECT employee_id, last_name, hire_date
      FROM (SELECT * FROM employees ORDER BY hire_date)
      WHERE ROWNUM < 11;
위와 같이 Inline View View의 결과를 전체 질의에서 사용할 수 있도록 해준다. 따라서 매번 별도의 View를 생성하지 않아도 된다.
4. Sequence
Sequence는 연속적으로 어떤 값을 부여하는 것을 의미한다. 예를 들어 회원 테이블에 가입한 신규 회원을 식별하는 식별자로써 회원번호에 일련번호를 할당할 수 있다. 이때 회원번호에Sequence를 적용할 수 있다.
Sequence가 없더라고 중복되지 않고 연속된 일련번호를 부여할 수는 있따.
SQL > SELECT MAX(회원번호) FROM 회원;
이라는 질의 문을 통해 최대 번호를 얻은 다음 증가시키는 연산을 해주면 된다.
하지만 위의 경우 읽어야 하는 회원의 수가 많을 수록 시스템에 부하가 크게 발생할 수 있는 단점이 있다. 따라서 MAX() 함수의 사용시 발생하는 질의의 부하를 최소화할 수 있기 위해Sequence를 사용한다.
1) Sequence 만들기
CREATE SEQUENCE Sequence이름
[START WITH 숫자
INCREMENT BY 숫자] ;
2) Sequence 사용
INSERT INTO Table VALUES ( Sequence이름.NEXTVAL )
NEXTVAL이란 다음 값으로 지정된 값을 자동으로 증가 시킨다. 지정하지 않으면 시작 값 및 증가 값은 1을 가진다.
*** 참조 문헌 : 10g로 시작하는 오라클 SQL & PL/SQL - 6장 데이터를 담을 그릇을 만들자

댓글 없음:

댓글 쓰기

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...