본문 바로가기
Database

오라클/SQL CREATE SEQUENCE : 시퀀스 만들기, 정수 등차수열 만들기

by 굿센스굿 2025. 3. 31.
반응형

1. 시퀀스(SEQUENCE)란?

SQL에서 **시퀀스(SEQUENCE)**는 정수 값이 일정한 간격(등차)로 증가하거나 감소하는 등차수열을 자동으로 생성하는 객체입니다. 주로 고유 키(Primary Key) 또는 순번을 자동으로 생성하는 데 사용됩니다.

🔹 시퀀스 관련 주요 SQL 명령어

명령어 설명

CREATE SEQUENCE 새로운 시퀀스 객체 생성
ALTER SEQUENCE 기존 시퀀스의 설정 변경
DROP SEQUENCE 시퀀스 삭제

2. SQL에서 시퀀스 생성하기

(1) 기본 시퀀스 생성

아래와 같이 CREATE SEQUENCE 명령어를 사용하면 기본 설정을 가진 시퀀스를 만들 수 있습니다.

CREATE SEQUENCE 시퀀스이름;

🔹 기본 설정:

  • 첫째 항: 1
  • 공차(증가값): 1
  • 최소값/최대값: 시스템 기본값 적용
  • CYCLE(순환 여부): 기본값 NOCYCLE

(2) 설정값을 지정한 시퀀스 생성

사용자가 원하는 값을 설정하여 시퀀스를 만들 수도 있습니다.

CREATE SEQUENCE 시퀀스이름
   INCREMENT BY K  -- 공차(K)
   START WITH L    -- 시작 값(L)
   MAXVALUE M      -- 최대값(M)
   MINVALUE N      -- 최소값(N)
   CYCLE | NOCYCLE -- 순환 여부 지정
   CACHE X | NOCACHE; -- 캐시 사용 여부 지정

(3) 시퀀스 생성 시 주요 옵션 항목

옵션 설명 기본값

INCREMENT BY 등차(증가 또는 감소할 값) 1
START WITH 첫 번째 값 설정 1
MAXVALUE 최대값 지정 (NOMAXVALUE 사용 가능) NOMAXVALUE
MINVALUE 최소값 지정 (NOMINVALUE 사용 가능) 1
CYCLE 최대/최소값 도달 시 순환 여부 (NOCYCLE) NOCYCLE
CACHE 메모리에 미리 저장할 값 개수 (NOCACHE) 20
ORDER 순서 보장 여부 (NOORDER) NOORDER
SESSION 세션별 시퀀스 여부 GLOBAL

3. CREATE SEQUENCE 예제

(1) 첫째 항 3, 공차 2, 최대값 30인 시퀀스 생성

아래 SQL 문장은 첫째 항이 3, 공차가 2, 최대값이 30인 sq1 시퀀스를 생성합니다.

CREATE SEQUENCE sq1
    INCREMENT BY 2
    START WITH 3
    MAXVALUE 30
    ORDER;

✅ 실행 결과:

  • 시퀀스 SQ1이 성공적으로 생성됩니다.
  • 해당 시퀀스는 3 → 5 → 7 → … → 29 → 3(순환 시) 형태로 작동합니다.

4. 생성한 시퀀스 조회하기

생성한 시퀀스의 정보를 조회하려면 다음 SQL 문을 실행합니다.

SELECT sequence_name, min_value, max_value, increment_by, cache_size, last_number
FROM user_sequences;

특정한 시퀀스 정보만 조회하고 싶다면 WHERE 절을 사용합니다.

SELECT * FROM user_sequences WHERE sequence_name = 'SQ1';

5. 시퀀스 값 사용하기

(1) 시퀀스에서 다음 값 가져오기

시퀀스를 이용해 새로운 값을 가져오려면 NEXTVAL을 사용합니다.

SELECT sq1.NEXTVAL FROM dual;

✅ 실행 결과:

  • 첫 실행 → 3
  • 두 번째 실행 → 5
  • 세 번째 실행 → 7

(2) 시퀀스의 현재 값 조회하기

현재 시퀀스의 마지막으로 생성된 값을 확인하려면 CURRVAL을 사용합니다.

SELECT sq1.CURRVAL FROM dual;

⚠ 주의:

  • NEXTVAL을 한 번도 호출하지 않으면 CURRVAL은 오류를 발생시킵니다.

6. 시퀀스 수정하기 (ALTER SEQUENCE)

이미 생성한 시퀀스의 설정을 변경하려면 ALTER SEQUENCE 명령어를 사용합니다.

ALTER SEQUENCE sq1
    INCREMENT BY 5
    MAXVALUE 50
    CYCLE;

✅ 변경 후 동작:

  • 공차가 2 → 5로 변경
  • 최대값이 30 → 50으로 변경
  • CYCLE 옵션이 활성화되어 최대값 도달 시 다시 처음으로 순환됨

7. 시퀀스 삭제하기 (DROP SEQUENCE)

시퀀스를 삭제하려면 DROP SEQUENCE 명령어를 사용합니다.

DROP SEQUENCE sq1;

⚠ 주의:

  • 삭제된 시퀀스는 복구할 수 없습니다.
  • 해당 시퀀스를 사용하던 테이블에서는 더 이상 자동 증가 기능을 사용할 수 없습니다.

8. 총평

  • CREATE SEQUENCE 명령어를 사용하면 정수값이 일정한 간격으로 증가하거나 감소하는 시퀀스를 쉽게 만들 수 있습니다.
  • NEXTVAL과 CURRVAL을 사용하여 시퀀스 값을 조회하고 활용할 수 있습니다.
  • ALTER SEQUENCE로 기존 시퀀스의 설정을 변경할 수 있으며, DROP SEQUENCE를 통해 삭제도 가능합니다.
  • 고유 키(Primary Key) 자동 증가, 순번 생성 등에 활용하면 편리합니다.

🔖 관련 태그

#SQL #오라클 #시퀀스 #CREATE_SEQUENCE #데이터베이스 #DB관리

반응형