728x90
반응형

안녕하세요. 이번포스팅은 시퀀스(SEQUENCE)에 대해서 알아보는 포스팅이 되겠습니다. 

 

우선 시퀀스가 무엇인지부터 알아볼까요?

 

시퀀스란?

 

- 테이블 내의 유일한 숫자를 자동으로 생성시켜 주는 역할을 합니다.  

- 오라클에서 무결성을 위해 유일한 값을 가져야할 경우, 사용자의 부담을 덜어낼 수 있습니다.

 

그럼 시퀀스의 형식에 대해서 알아볼까요?

 

  1. CREATE SEQUENCE sequence_name
  2.           [START WITH n]
  3.           [INCREMENT BY n]
  4.           [{MAXVALUE n | NOMAXVALUE}]
  5.           [{MINVALUE n | NOMINVALUE}]
  6.           [{CYCLE | NOCYCLE}]
  7.           [{CACHE n | NOCACHE}]
  8.  

START WITH n : 시퀀스 번호의 시작을 지정합니다.

INCREMENT BY n : 연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다.

MAXVALUE n : 시퀀스의 최대값을 지정합니다.

MINVALUE n : 시퀀스의 최소값을 지정합니다.

CYCLE  : 시퀀스 값이 최대값까지 증가되고 나면 START WITH에서 지정한 시작 값으로 시퀀스를 다시 시작합니다. 

CACHE n : 메모리상에서 시퀀스 값을 관리하도록 하는 것으로 기본 값은 20입니다.

 

 

자 그럼 시퀀스를 생성하는 예제를 보실까요?

 

  1. CREATE SEQUENCE Seq_Test
  2. INCREMENT BY 1
  3. START WITH 1;

 

시퀀스가 생성된 것이 보이실겁니다. ㅎㅎㅎ

 

이제는 생성된 시퀀스를 사용해 볼까요?

 

우선은 CURRVAL, NEXTVAL을 알아봐야합니다.

 

CURRVAL : 시퀀스의 현재 값을 알아내기 위해서 사용됩니다.

NEXTVAL : 시퀀스의 새로운 값을 할당 합니다. 

 

CURRVAL 과 NEXTVAL을 사용가능한 경우와 사용가능하지 않은 경우를 알아보겠습니다. 

 

●사용 가능한 경우 

 -  서브 쿼리가 아닌 SELECT 문 

 -  INSERT문의 SELECT 절 

 -  INSERT 문의 VALUE 절 

 -  UPDATE 문의 SET 절 

 

●사용이 불가능한 경우 

 -  VIEW의 SELECT절

 -  DISTINCT 키워드가 있는 SELECT문

 -  GROUP BY, HAVING, ORDER BY 절이 있는 SELECT문

 -  SELECT, DELETE, UPDATE의 서브 쿼리

 -  CREATE TABLE, ALTER TABLE 명령의 DEFAULT 값

 

자 그럼 실제로 사용하는 예제를 진행하겠습니다.

 

  1. INSERT INTO Index_Test VALUES(SEQ_TEST.NEXTVAL, '열청', 'SKAWKSLRK',SYSDATE);

INDEX_TEST테이블은 바로 전 포스팅의 테스트용으로 만든 테이블입니다.

 

우선 여기에는 데이터가 하나 들어있어서

 

시퀀스의 START WITH를 2로 바꾸어 진행했습니다.

 

 

결과를 보시면 제대로 시퀀스가 적용된 것을 보실수 있으실겁니다.

 

시퀀스를 삭제 하고 싶으시면,

 

  1. DROP SEQUENCE 시퀀스 이름;

 

위와 같이 해주시면 해당 시퀀스가 삭제 됩니다.

 

이렇게 시퀀스에 대해서 알아보았습니다.

 

모두 열공 하세요 ^_^

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,