시퀀스 (Sequence)
자동으로 순차적으로 증가하는 숫자 값을 반환하는 데이터베이스 객체입니다. 주로 기본키(PK) 값 또는 유일한 식별자를 생성하는 데 사용됩니다.
주요 용도: 중복을 방지하고 자동으로 증가하는 값이 필요할 때 사용됩니다. 예를 들어, 게시판의 글 번호를 생성할 때 유용합니다.
시퀀스 생성 옵션
START WITH n: 시퀀스의 시작 값을 설정합니다.
INCREMENT BY n: 시퀀스 값이 증가하는 간격을 설정합니다.
MAXVALUE n: 시퀀스가 도달할 수 있는 최대값을 설정합니다. NOMAXVALUE를 사용하면 무한대로 설정됩니다.
MINVALUE n: 시퀀스가 도달할 수 있는 최소값을 설정합니다. NOMINVALUE를 사용하면 무한대로 설정됩니다.
CYCLE: 시퀀스가 최대값에 도달한 후 다시 최소값으로 돌아가도록 설정합니다. NOCYCLE은 기본값으로, 시퀀스가 최대값에 도달하면 더 이상 값을 생성하지 않습니다.
CACHE n: 시퀀스의 다음 n 값을 메모리에 캐시하여 성능을 향상시킵니다.
시퀀스 생성 및 사용 예시
sql 코드
-- 시퀀스 생성
CREATE SEQUENCE SEQ_serial_no
INCREMENT BY 1
START WITH 100
MAXVALUE 110
MINVALUE 99
CYCLE
CACHE 2;
-- 테이블 생성
CREATE TABLE goods (
good_no NUMBER(3),
good_name VARCHAR2(10)
);
-- 시퀀스의 다음 값을 사용하여 테이블에 데이터 삽입
INSERT INTO goods
VALUES (SEQ_serial_no.NEXTVAL, '제품1');
-- 테이블 조회
SELECT * FROM goods;
-- 현재 시퀀스 값 조회
SELECT SEQ_serial_no.CURRVAL FROM dual;
-- 시퀀스 삭제
DROP SEQUENCE SEQ_serial_no;
SQL 명령어 설명
시퀀스 생성: CREATE SEQUENCE SEQ_serial_no를 사용하여 시퀀스를 생성합니다. 이 시퀀스는 100부터 시작하여 1씩 증가하며, 최대 110까지 값을 생성하고, 그 후에는 다시 시작값인 99로 돌아갑니다.
테이블 생성: CREATE TABLE goods를 사용하여 good_no와 good_name 컬럼을 가진 테이블을 생성합니다.
데이터 삽입: SEQ_serial_no.NEXTVAL을 사용하여 시퀀스의 다음 값을 good_no에 자동으로 삽입합니다.
현재 시퀀스 값 조회: SEQ_serial_no.CURRVAL을 사용하여 현재 시퀀스 값을 조회합니다. CURRVAL은 현재 세션에서 마지막으로 생성된 시퀀스 값을 반환합니다.
시퀀스 삭제: DROP SEQUENCE SEQ_serial_no를 사용하여 시퀀스를 삭제합니다. 이 작업은 시퀀스를 더 이상 사용하지 않을 때 필요합니다.