[Oracle] 시퀀스(Sequence) 사용법

2021. 6. 1. 17:33·dev/Oracle
반응형

시퀀스(Sequence)?

유일한 값을 생성해 주는 오브젝트

 

자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 오브젝트입니다.

보통 중복 값을 허용하지 않는 PK에 사용을 많이 합니다.

예시로는 회원번호, 게시판 글 번호 등... 지속적으로 순번이 증가할 때 사용합니다.

 

사용방법

CREATE SEQUENCE [스키마명].[시퀀스]

INCREMENT BY 1 -> 1씩 증가

START WITH 1 -> 1부터 시작, WITH 100인 경우 100부터 시작

MINVALUE 1 -> 1부터 시작(최솟값)

MAXVALUE 100 -> 100까지(최댓값)

NOCYCLE -> 순환하지 않음

NOCACHE  -> 시퀀스 값을 메모리에 할당하지 않음

 

  • INCREMENT BY : 시퀀스 실행 시 증가시킬 값 
  • START WITH : 시퀀스의 시작 값 (MINVALUE와 같거나 커야 한다)
  • MINVALUE : 시퀀스가 시작되는 최솟값
  • MAXVALUE : 시퀀스가 끝나는 최댓값  
    (default = 9999999999999999999999999999)
  • NOCYCLE | CYCLE : 시퀀스의 값이 최댓값 도달 시 시퀀스 생성 중지 | 시퀀스의 값이 최댓값에 도달 시 다시 최솟값부터 시작
    (default = NOCYCLE)
  • NOCACHE | CACHE : 시퀀스 값을 메모리에 할당하지 않음 | 메모리에 시퀀스 값을 미리 할당
    (default = NOCACHE)
  • NOORDER | ORDER : 사용 안 함 | 요청 순서로 값을 생성하여 발생 순서를 보장
    (default = NOORDER)
시퀀스 생성
CREATE SEQUENCE TEST_SEQ
INCREMENT BY 1 -- 1씩 증가.
START WITH 10 -- 10부터 시작, WHIT 100 = 100부터 시작
MAXVALUE 100 -- 100까지
MINVALUE 1; -- 1부터

 

CURRVAL  : 현재 SEQ 값 (맨 처음엔 확인 불가. NEXTVAL 1회 실행 후 확인이 가능하다)

SELECT TEST_SEQ.currval --현재 시퀀스 값 확인
FROM DUAL;

NEXTVAL : 다음 값 (CURRVAL + INCREMENT BY [NUMBER])

SELECT TEST_SEQ.nextval -- 다음 시퀀스 값
FROM DUAL;

 

시퀀스 수정
ALTER SEQUENCE TEST_SEQ
INCREMENT BY 3; --3씩 증가

ALTER SEQUENCE TEST_SEQ
MAXVALUE 9999; -- MAXVALUE(시퀀스 최댓값)을 9999로 변경

START WITH(초기값)는 변경할 수 없다. 

초기화는 불가능. 무조건 지우고 다시 만들어야 한다.

ALTER SEQUENCE TEST_SEQ 
START WITH 10; --에러!!

 

시퀀스 검색
SELECT * FROM USER_SEQUENCES; --전체 시퀀스 검색

SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'TEST_SEQ'; --특정 시퀀스 검색

 

시퀀스 삭제
DROP SEQUENCE TEST_SEQ;

 

반응형
저작자표시 (새창열림)

'dev > Oracle' 카테고리의 다른 글

[Oracle]무결성(Constraint) 제약 조건  (0) 2021.05.31
[Oracle] JOIN 쉽게 이해하기  (0) 2021.05.29
[Oracle] ORDER BY, HAVING, ALIAS, GROUP FUNCTION 연습  (0) 2021.05.27
[Oracle] 비교연산자, ALL, ANY, IN, NOT IN, BETWEEN, LIKE 연습  (0) 2021.05.27
[Oracle] scott 계정 연습문제 (SELECT문, 비교 연산자, 논리 연산자)  (0) 2021.05.27
'dev/Oracle' 카테고리의 다른 글
  • [Oracle]무결성(Constraint) 제약 조건
  • [Oracle] JOIN 쉽게 이해하기
  • [Oracle] ORDER BY, HAVING, ALIAS, GROUP FUNCTION 연습
  • [Oracle] 비교연산자, ALL, ANY, IN, NOT IN, BETWEEN, LIKE 연습
:j
:j
ddongjunn@gmail.com
  • :j
    dev.j
    :j
  • 전체
    오늘
    어제
    • :j
      • dev
        • Ceph
        • CS
        • Spring
        • k8s
        • Java
        • JPA
        • Web
        • CCNA
        • 코딩테스트
        • JavaScript
        • XML
        • JSON
        • CSS
        • html
        • jQuery
        • Mssql
        • Oracle
      • 회고
      • :j story
  • 블로그 메뉴

    • 홈
    • 태그
    • github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HAVING
    group by
    항해플러스백앤드
    오버로딩
    항해플러스
    appendChild
    항해99
    CustomContainer
    class
    MSSQL
    항해백앤드
    Queue
    오버라이딩
    지역변수
    Name
    ceph
    멤버변수
    다형성
    id
    <br>
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
:j
[Oracle] 시퀀스(Sequence) 사용법
상단으로

티스토리툴바