반응형
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관리
반응형
'Database' 카테고리의 다른 글
오라클 SQL - DROP SEQUENCE: 시퀀스 객체 삭제하기 (0) | 2025.03.31 |
---|---|
오라클/SQL CREATE SYNONYM: 동의어(시노님) 생성 방법 및 공용 동의어(PUBLIC SYNONYM) 만들기 (0) | 2025.03.31 |
오라클 SQL - DROP SYNONYM : 동의어(시노님) 삭제하기 (0) | 2025.03.31 |
오라클/SQL SELECT - FROM 조회 결과를 CSV, XLSX 파일로 저장하는 방법 (익스포트 마법사 활용) (0) | 2025.03.31 |
오라클 SQL NTILE OVER 함수: 특정 컬럼을 기준으로 등급 부여 및 그룹 묶기 (0) | 2025.03.31 |