국비필기노트/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 : 현재값 조회