STUDY/web

[Oracle] Sequence, Index 정리

이앤지 2021. 11. 8. 19:34

Sequence

시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기.

시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있다.

-- Sequence : 숫자를 생성해주는 객체
-- 설정을 통해서 일련 번호를 생성 -> 기본키가 대리키인 경우 입력 값으로 사용

-- sequence 의 생성
-- create sequence {시컨스이름} 설정...

-- 시퀀스 생성
create sequence test_seq;

desc dept;
select * from dept;
-- 부서 번호를 자동으로 부여해주는 시퀀스 객체를 생성.
-- 시작 값은 10, 증가값은 10, 10~99
create sequence dept_deptno_seq 
start with 10 
increment by 10 
MAXVALUE 90
;

-- sequence 삭제
drop sequence dept_deptno_seq;

-- 시작 값이 1이고 1씩 증가하는 시퀀스 EMP_SEQ을 생성합니다.
create sequence emp_seq
start with 1
increment by 1
MINVALUE 1
MAXVALUE 9999
;

-- 시퀀스의 값을 확인
-- 현재 값
select emp_seq.currval  from dual;
select dept_deptno_seq.currval from dual;

-- 다음(새로운) 값
select emp_seq.nextval  from dual;
select dept_deptno_seq.nextval from dual;

 


 

Index

검색의 성능을 높이기 위해 사용하는 객체!

물리적인 저장공간을 가진다 -> 저장공간 확보 필요

데이터의 변경시에는 성능이 떨어질 수 있다.

필수가 아니라 선택이고

검색이 오래 걸리는 환경에서 주로 사용.

 

코드

drop table emp01;

create table emp01
as
select * from emp
;
select count(*) from emp01;

insert into emp01 (empno, ename) values (1000, 'test1');


select * from emp01 where ename='test1';
select * from emp01;

delete from emp01 where ename='SCOTT';
commit;

-- 많은 데이터 입력
insert into emp01 select * from emp01 ;

create index emp01_index on emp01(ename);



select * from book;
delete from book where bookid>10;

drop table book_log;