정의

데이터베이스 객체로, 시퀀스가 생성할 때 설정된 규칙에 따라 정수를 생성한다. 시퀀스는 행을 식별하는 기본 키 값을 자동적으로 생성하거나, 난수 생성에 사용한다. 기본 값은 1부터 시작하여 1씩 증가하고, 최대 15개까지 만들 수 있다.


시퀀스 생성

CREATE SEQUENCE 시퀀스명

[INCREMENT BY  증가값]

[START WITH       시작값]

[MAXVALUE        최대값]

[CYCLE              반복횟수]


시퀀스의 참조변수

시퀀스의 값을 반환하는 참조변수로 NEXTVAL과 CURRVAL이 있다.

시퀀스명.NEXTVAL : 시퀀스의 현재 값에 '증가값'을 더한 값을 정수로 반환

시퀀스명.CURRVAL : 시퀀스의 현재 값을 정수로 반환



시퀀스의 데이터를 다루는 참조변수 용도

INSERT문에서 VALUES절, SELECT문에서 선택 목록, UPDATE문의 SET절에 사용할 수 있다.

DISTINCT절이 있는 SELECT문, ORDER BY절, GROUP BY절이 있는 SELECT문, 서브 쿼리, 뷰 쿼리에서는 사용할 수 없다.


SQL> SELECT Dept_Seq.NEXTVAL, Dept_ID, Dept_name

    2    FROM Department;


NEXTVAL    DEPT_ID    DEPT_NAME

---------- ---------- -------------

1    컴공        컴퓨터공학과

2    정통        정보통신공학과


SQL>


시퀀스 삭제

DROP SEQUENCE 시퀀스명;


연습문제

다음과 같이 시퀀스를 생성했다.


create sequence seq1

start with 100

increment by 10

maxvalue 200

cycle

nocache;


seq1 시퀀스는 최대값인 200까지 숫자를 생성한 상태이다. 다음 SQL문을 실행하면 어떤 결과가 나올까?


SELECT seq1.nextval FROM dual;


답> 1

 -> start with 가 100이지만 최대값을 찍고나면 다시 1부터 시작.

+ Recent posts