Database

[Oracle Database] 12. 객체 종류에 대해 알아보자

myeongju 2024. 7. 14. 19:31
반응형

데이터 사전

데이터베이스를 구성하고 운영하는데 필요한 모든 정보를 저장하는 특수한 테이블

데이터 베이스가 생성되는 시점에 자동으로 만들어진다.

데이터 사전에는 데이터베이스 메모리, 성능, 사용자, 권한, 객체 등 오라클 데이터베이스 운영에 중요한 데이터가 보관되어 있어 데이터 사전 뷰로 사용자에게 보여진다.

 

 

데이터 사전 뷰 접두어

  • USER_XXXX : 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보
  • ALL_XXXX : 현재 데이터베이스에 접속한 사용자가 소유한 객체 또는 다른 사용자가 소유한 객체 중 사용 허가를 받은 객체, 즉 사용 가능한 모든 객체 정보
  • DBA_XXXX : 데이터베이스 관리를 위한 정보(데이터베이스 관리 권한을 가진 SYSTEM, SYS 사용자만 열람 가능)
  • V$_XXXX : 데이터베이스 성능 관련 정보(X$_XXXX 테이블의 뷰)

 

 

인덱스

인덱스의 종류

  • 단일 인덱스
  • 복합 인덱스, 결합 인덱스
    • 두 개 이상 열로 만들어지는 인덱스
    • WHERE절의 두 열이 AND 연산으로 묶이는 경우
  • 고유 인덱스
    • 열에 중복 데이터가 없을 때 사용
    • UNIQUE 키워드를 지정하지 않으면 비고유 인덱스가 기본값
  • 함수 기반 인덱스 : 열에 산술식 같은 데이터 가공이 진행된 결과로 인덱스 생성
  • 비트맵 인덱스 : 데이터 종류가 적고 같은 데이터가 많이 존재할 때 주로 사용

 

인덱스 생성

CREATE INDEX 인덱스 이름
         ON 테이블 이름 (열 이름1 ASC OR DESC,
                      열 이름2 ASC OR DESC,
                      ...);

⚠️ 인덱스는 WHERE절이 있어야 사용할 수 있음

 

 

인덱스 삭제

DROP INDEX 인덱스 이름;

 

 

VIEW

하나 이상의 테이블을 조회하는 SELECT문을 저장한 객체

 

사용 목적

  1. 편리성: SELECT문의 복잡도를 완화하기 위해
  2. 보안성: 테이블의 특정 열을 노출하고 싶지 않을 경우

 

 

먼저 만들고자하는 쿼리를 작성하고, VIEW로 작

select ename, job, sal, grade, dname
from emp inner join dept on emp.deptno = dept.deptno
         inner join salgrade on sal between losal and hisal;

create view v_emp_info
as
select ename, job, sal, grade, dname                         
from emp inner join dept on emp.deptno = dept.deptno
         inner join salgrade on sal between losal and hisal;

select *                                                    
from v_emp_info;

 

 

시퀀스

시퀀스(sequence)란 ?

오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체

 

모든 일련번호의 값이 관리되길 원하면, 시퀀스는 사용하면 안된다.

CREATE SEQUENCE 시퀀스 이름
[INCREMENT BY N]
[START WITH N]
[MAXVALUE N | NOMAXVALUE]
[MINVALUE N | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE N | NOCACHE]

 

요소 설명
시퀀스 이름 생성할 시퀀스 이름 지정. 아래 절들을 지정하지 않을 경우 1부터 시작하여 1만큼 계속 증가하는 시퀀스가 생성(필수)
INCREMENT BY N 시퀀스에서 생성할 번호의 증가 값(기본값은 1) (선택)
START WITH N 시퀀스에서 생성할 번호의 시작 값(기본값은 1) (선택)
MAXVALUE N, NOMAXVALUE 시퀀스에서 생성할 번호의 최대값 지정(선택)
MINVALUE N, NOMINVALUE 시퀀스에서 생성할 번호의 최솟값 지정(선택)
CYCLE, NOCYCLE 시퀀스에서 생성한 번호가 최댓값에 도달했을 경우 CYCLE이면 시작값에서 다시 시작, NOCYCLE이면 번호 생성이 중단되고, 추가 번호 생성을 요청하면 오류 발생(선택)
CACHE N, NOCACHE 시퀀스가 생성할 번호를 메모리에 미리 할당해 놓은 수를 지정, NOCACHE는 미리 생성하지 않도록 설정, 옵션을 모두 생략하면 기본값은 20(선택)

 

create sequence seq_dept_deptno
       start with 50
       increment by 10
       maxvalue 90                  
       nocycle
       nocache;

insert into dept 
values (seq_dept_deptno.nextval, '개발부', '서울');

select seq_dept_deptno.currval     
from dual;

   CURRVAL
----------
        50

insert into dept 
values (seq_dept_deptno.nextval, '총무부', '부산');

 

 

반응형