반응형
데이터 사전
데이터베이스를 구성하고 운영하는데 필요한 모든 정보를 저장하는 특수한 테이블
데이터 베이스가 생성되는 시점에 자동으로 만들어진다.
데이터 사전에는 데이터베이스 메모리, 성능, 사용자, 권한, 객체 등 오라클 데이터베이스 운영에 중요한 데이터가 보관되어 있어 데이터 사전 뷰로 사용자에게 보여진다.
데이터 사전 뷰 접두어
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문을 저장한 객체
사용 목적
- 편리성: SELECT문의 복잡도를 완화하기 위해
- 보안성: 테이블의 특정 열을 노출하고 싶지 않을 경우
먼저 만들고자하는 쿼리를 작성하고, 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, '총무부', '부산');
반응형