대덕인재/Oracle

[Oracle D-16] 시퀀스(Sequence)

꼬마버거 2025. 4. 22. 18:46

✅ 시퀀스(Sequence)란?

자동으로 숫자를 1씩 증가시키는 번호표 생성기야!

📌 보통 **기본키(PK)**에 들어갈 고유한 번호(ID)를 자동으로 만들어줄 때 사용해!

 

🎯 왜 시퀀스를 쓰는 걸까?

  1. 자동 번호 부여
    → 1, 2, 3,... 자동으로 생성돼서 중복 없이 안전하게 번호 붙일 수 있어!
  2. 여러 명이 동시에 등록해도 문제 없음
    → 동시성이 보장돼! (= 충돌 안 남)
  3. 규칙(증가값, 시작값 등)을 내 맘대로 설정 가능

✅ 시퀀스 만드는 법

CREATE SEQUENCE 시퀀스이름
START WITH 1        -- 시작값
INCREMENT BY 1      -- 몇씩 증가할지
MINVALUE 1          -- 최소값
MAXVALUE 9999       -- 최대값
NOCYCLE             -- 끝까지 가면 멈춰! (다시 시작 안 함)
CACHE 20;           -- 미리 20개 만들어놓고 성능 향상

✨ 예시

CREATE SEQUENCE cust_seq
START WITH 1
INCREMENT BY 1
NOCACHE;

 

✅ 시퀀스 사용하는 법

-- 다음 숫자 하나 뽑기
SELECT cust_seq.NEXTVAL FROM dual;
-- 현재까지 사용된 값 보기 (NEXTVAL을 먼저 실행한 후에만 가능)
SELECT cust_seq.CURRVAL FROM dual;

✅ 시퀀스를 INSERT에 사용하기

INSERT INTO customers (cust_id, name)
VALUES (cust_seq.NEXTVAL, '홍길동');
 

→ 이러면 cust_id에 1, 2, 3... 자동으로 들어가!


✅ 시퀀스 삭제

DROP SEQUENCE cust_seq;

🔁 옵션 정리


 

옵션 설명
START WITH n 시작 숫자
INCREMENT BY n 몇씩 증가할지
MINVALUE / MAXVALUE 최소/최대 범위
CYCLE / NOCYCLE 최대 도달 시 다시 처음으로 돌아갈지 여부
CACHE / NOCACHE 성능 향상을 위해 몇 개를 미리 생성해둘지

💡 참고 꿀팁!

  • NEXTVAL은 항상 먼저 써야 CURRVAL이 생겨!
  • 시퀀스는 테이블과 별개 객체야 → 테이블 지워도 시퀀스는 남아있어!
  • 기본키 자동 증가할 때 최고 유용해!

'대덕인재 > Oracle' 카테고리의 다른 글

[Oracle D-16] SYNONYM 객체  (0) 2025.04.22
[Oracle D-16] 비트맵 인덱스(Bitmap Index)  (0) 2025.04.22
[Oracle D-16] VIEW  (0) 2025.04.22
[Oracle D-15] Oracle 객체  (0) 2025.04.21
[Oracle D-15] 집합연산자(Set Operators)  (0) 2025.04.21