시퀀스(Sequence)란?

시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 보통 PK값에 중복값을 방지하기위해 사용합니다. 예를들어 게시판에 글이 하나 추가될때마다 글번호(PK)가 생겨야 한다고 해보겠습니다. 만약 100번까지 글 번호가 생성되어있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101으로 하나의 ROW를 생성해주어야 할것입니다. 이때 101이라는 숫자를 얻으려면 기존 글번호중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야하는데 시퀀스를 사용하면 이러한 로직이 필요없이 데이터베이스에 ROW가 추가될때마다 자동으로 +1을 시켜주어 매우 편리합니다.

출처 https://coding-factory.tistory.com/420

 

[Oracle] 오라클 시퀀스(Sequence) 사용법 총정리 (생성, 조회, 수정, 삭제)등

시퀀스(Sequence)란? 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 보통 PK값에 중복값을 방지하기위해 사용합니다. 예를들어 게시판에 글이 하나 추가될때

coding-factory.tistory.com


시퀀스(Sequence) 사용법

CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자] --증감숫자가 양수면 증가 음수면 감소 디폴트는 1
START WITH [시작숫자] -- 시작숫자의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE
NOMINVALUE OR MINVALUE [최솟값] -- NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -1028 
                               -- MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야함
NOMAXVALUE OR MAXVALUE [최대값] -- NOMAXVALUE : 디폴트값 설정, 증가일때 1027, 감소일때 -1
                               -- MAXVALUE : 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE보다 커야함
CYCLE OR NOCYCLE --CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지
CACHE OR NOCACHE --CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음

ex)

CREATE SEQUENCE SEQ_MEMBER_ID
    START WITH 1
    INCREMENT BY 1
    MAXVALUE 5000
    MINVALUE 1
    NOCYCLE 
    CACHE 20;

 

테이블 생성 (Sequence) 사용법 예시 2개

CREATE TABLE T_SHOPPING_MEMBER(
    MEMBER_ID 			VARCHAR2(20),
    MEMBER_PW 			VARCHAR2(1000),
	MEMBER_NAME 		VARCHAR2(50),
	REG_DATE 			DATE
    CONSTRAINT MEMBER_PK_MEMBER_ID PRIMARY KEY (MEMBER_ID)
);
CREATE TABLE T_GOODS_MYBAG(
    BAG_GOODS_ID 			    NUMBER(20),
    MEMBER_ID                   VARCHAR2(50),
    BAG_GOODS_TITLE 			VARCHAR2(50),
    BAG_GOODS_WRITER 			VARCHAR2(50),
	BAG_GOODS_PRICE 			NUMBER(10),
	BAG_GOODS_PUBLISHER 		VARCHAR2(50),
	BAG_GOODS_SORT 				VARCHAR2(50),
	BAG_GOODS_QTY				NUMBER(20),
	BAG_GOODS_TOTALPRICE		NUMBER(20),
	BAG_GOODS_TOTALQTY			NUMBER(20),
    CONSTRAINT GOODS_PK_BAG_GOODS_ID PRIMARY KEY (BAG_GOODS_ID),
    CONSTRAINT MYBAG_FK_MEMBER_ID FOREIGN KEY (MEMBER_ID)
    REFERENCES T_SHOPPING_MEMBER (MEMBER_ID)
);

 

복사했습니다!