데이터 과학/Database

오라클 - 시퀀스(SEQUENCE)

weblogic 2008. 9. 3. 14:19
반응형
ORACLE SEQUENCE

- 유일(UNIQUE)한 값을 생성해주는 오라클 객체
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
- 시퀀스는 테이블과 독립적으로 저장되고 생성된다. 따라서 하나의 시퀀스를 여러 테이블에서 사용할 수 있다.

시퀀스 생성 문법[Syntax]
CREATE SEQUENCE sequence_name
[START WITH n]                               -- n은 시퀀스 시작 값 지정
[INCREMENT BY n]                          -- n은 시퀀스 증가 값 지정
[MAXVALUE n | NOMAXVALUE]        -- 시퀀스 최대값, NOMAXVALUE는 무한대
[MINVALUE n | NOMINVALUE]           -- 시퀀스 최소값, NOMINVALUE는 무한대
[CYCLE | NOCYCLE]

시퀀스 생성/사용 예제
SQL>CREATE SEQUENCE emp_seq
        START WITH 1
        INCREMENT BY 1
        MAXVALUE 100000;

 sequence created.

-- 시작값이 1이고 1씩 증가하고, 최대값이 100,000이 되는 시퀀스를 생성했습니다.

SQL>INSERT INTO emp(empno, ename, hiredate) VALUE(emp_seq.NEXTVAL, 'David', sysdate);

-- empno는 컬럼값을 입력할 때 다음 값을 기억하지 않아도 NEXTVAL을 사용하여 자동으로 입력이 된다.
-- CURRVAL : 현재값 반환  NEXTVAL : 현재 시퀀스 값의 다음값 반환

SQL>SELECT emp_seq.CURRVAL FROM DUAL;

      CURRVAL
     ----------------
                1

SQL>SELECT emp_seq.NEXTVAL FROM DUAL;
      NEXTVAL
     -----------------
                 2

시퀀스 수정/삭제 문법[Syntax]
ALTER SEQUENCE sequence_name  -- START WITH는 수정할 수 없다.
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]

시퀀스 수정/삭제 예제
SQL>ALTER SEQUENCE emp_seq
       INCREMENT BY 2
       CYCLE;

 sequence altered.

 -- 2씩 증가하고, 최대값을 넘으면 다시 처음으로 순환하도록 수정

SQL>DROP SEQUENCE emp_seq

sequence dropped.

반응형