개발(Web)/DB

[Oracle] 데이터정의어(DDL) - View, Sequence, Index, Synonym

shinyelee 2020. 7. 29. 15:37

데이터정의어(DDL) - View, Sequence, Index, Synonym에 대해 알아보자.

Ⅰ. View

* 하나 이상의 Base Table(찐테이블)을 기반으로 생성은 되었으나 물리적으로 존재하지 않음(폰테이블).

* Data Dictionary에 Select 구문 형태로 정의만 되어 있는 가상의 논리적인 테이블.

1. 뷰 생성 및 수정(create/create or replace)

CREATE VIEW empvu80 AS
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
CREATE OR REPLACE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS
SELECT d.department_name, MIN(e.salary), MAX(e.salary), AVG(e.salary)
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
GROUP BY d.department_name;

2. 뷰 사용 - 테이블과 동일함

* 뷰를 통한 insert, update, delete 가능 → 결국 Base Table의 Data가 조작되어짐.

SQL> DESC dept_sum_vu
SQL> SELECT * FROM dept_sum_vu;

3. 뷰 삭제

DROP VIEW empvu90;

Ⅱ. Sequence

* 자동으로 고유한 번호를 반환해 주는 번호생성기와 같은 Object.

1. 시퀀스 생성(create sequence)

기존에는 새 부서에 숫자를 부여할 때, 중복되지 않도록 수동으로 입력해야 했다.
sequence를 설정함으로써 부서를 신설할 때마다 매번 새 숫자를 입력하지 않아도 된다.
XXX, YYY, ZZZ 부서의 ID값이 각 350, 360, 370으로 등록됐다.

2. 시퀀스 사용

가. 시퀀스명.NEXTVAL : 사용 가능한 다음 시퀀스값 반환.

나. 시권스명.CURRVAL : 현재 시퀀스값, 즉 마지막 시퀀스값 반환.

nextval : 다음에 쓸 시퀀스 값(불러옴과 동시에 값 써버림). currval : 마지막으로 쓴 시퀀스 값(숫자 안 쓰고 확인만 함).

3. 시퀀스 수정(alter sequence)

* 시퀀스 간격, 최대값, 최소값, Cycle 옵션, Cache 옵션 변경 가능.

* 시퀀스 시작값 변경 불가(start with N)

ALTER SEQUENCE dept_deptid_seq
                        INCREMENT BY 20
                        MAXVALUE 999999
                        NOCACHE
                        NOCYCLE;

4. 시퀀스 삭제(drop sequence)

DROP SEQUENCE dept_deptid_seq;

Ⅲ. Index

* Oracle 서버에서 포인터를 사용하여 행의 검색 속도를 높이기 위해 사용하는 Object.

* Oracle 서버가 자동으로 사용하고 유지 관리함.

* WHERE절이나 JOIN조건에서 자주 사용되는 컬럼인 경우 인덱스 생성 시 성능에 도움이 됨.

* 테이블이 작거나 자주 갱신되는 컬럼 또는 자주 사용하지 않는 컬럼에는 인덱스 생성 권장하지 않음.

1. 인덱스 생성

가. 자동생성

* Primary key 또는 Unique 제약조건이 정의된 컬럼에 자동 생성됨.

나. 수동생성

CREATE INDEX emp_last_name_idx
ON employees(last_name);

2. 인덱스 삭제

DROP INDEX emp_last_name_idx;

Ⅳ. Synonym

* 객체에 다른 이름을 부여해 주는 Object.

1. 동의어 생성

synonym으로 특정 테이블의 동의어를 만들어줄 수 있다(컬럼은 적용 안 된다. 걍 alias 써라).
어따 쓰냐고? 테이블명을 짧은 별칭으로 소환 가능해, 타자를 덜 쳐도 된다. 별 거 아니지만 쌓이면 엄청나다.

2. 동의어 삭제

번외 - 제약조건 확인.

 

출처 : 아이티윌 부산교육센터 Oracle Database 12c : 실습가이드북

반응형

'개발(Web) > DB' 카테고리의 다른 글

[Oracle] 데이터 충돌  (0) 2020.09.22
[Oracle] DB User 관리하기  (0) 2020.09.21
[Oracle] 데이터정의어(DDL) - Table 연습문제  (0) 2020.07.28
[Oracle] 데이터정의어(DDL) - Table  (0) 2020.07.21
[Oracle] Manipulating Data  (0) 2020.07.17