정의
데이터베이스 객체로, 시퀀스가 생성할 때 설정된 규칙에 따라 정수를 생성한다. 시퀀스는 행을 식별하는 기본 키 값을 자동적으로 생성하거나, 난수 생성에 사용한다. 기본 값은 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부터 시작.