국비필기노트/DBMS_Oracle
데이터베이스(DBMS)_시퀀스(Sequence)
개발..너...
2022. 4. 22. 13:58
▶시퀀스(Sequence)란?
자동 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체로서 연속적인 번호를 만들어 주는 기능이다. 보통 PK값이 중복값을 방지하기 위해 사용한다
예를들어 게시판에 글이 하나 추가되었을 때 마다 글번호(PK)가 생겨야 한다고 할 때, 만약 100번까지 글 번호가 생성되었다면 그 다음 글이 추가가 되었을 경우 글 번호가 101로 하나의 row를 생성해 주어야한다. 이 때, 101이라는 숫자를 얻으려면 기존 글 번호 중 가장 큰 값에 +1을 하는 로직을 어딘가에는 넣어야하는데 시퀀스를 사용하면 이러한 로직이 필요 없이 데이터베이스에 row가 추가될 때 마다 자동으로 +1을 시켜주어 매우 편리하다.
▶시퀀스(Sequence) 생성방법
Create sequence 시퀀스 이름
increment by n : 증가값을 설정, ex) 2: 2씩 증가, 기본값 : 1
start with n : 시작값 설정, 기본값은 1
maxvalue n | nomaxvalue : 시퀀스 최대값 설정 | 무한대
cycle | nocycle : cycle로 지정하면 maxvalue에 도달했을 때 다시 minvalue부터 시작하게 된다.
기본값은 nocycle
chche n | nocache : 시퀀스의 속도를 개선하기 위해여 캐싱여부 지정
시퀀스문은 테이블을 생성하기 전에 반드시 만들어주어야한다. 시퀀스를 설정할 경우 이 둘은 세트라고 생각하고 SQL문을 작성한다.
▶시퀀스(Sequence) 사용 방법
1) INSERT: 다음값 대입
2) DROP: 삭제
3) CACHE: 캐싱
cache는 속도 개선을 통해서 속도개선을 위해서 임시로 어떠한 데이터를 잠시 보관하고 있는 것이다. 속도를 조금 더 빠르게 해주기 위한 옵션으로 cashe옆의 숫자는 보관할 수 있ㅇ는 갯수이다. 지금은 데이터 건수가 얼마 안되어 큰 차이는 못느끼지만 사이클을 돌 때 마다 보관하는 양에 따라서 속도가 많이 달라진다.
4) CURRVAL : 현재값 조회