SQL

시퀀스(Sequence)

비뀨_ 2021. 7. 16. 20:51

사용 이유 : 

MySql에는 테이블을 생성할 때 Pk (기본키 : primary key) 컬럼에 auto_increment로 중복되지 않는 유일한 값을 가진 컬럼을 만들 수 있음.

 

-- 게시글을 저장하는 테이블 Board_tbl 생성
CREATE TABLE 'Board_tbl'(
'bno' int(100) NOT NULL AUTO_INCREMENT PRIMARY KEY,
'name' varchar(10),
'text' varchar 
);

 

오라클에는 auto_increment 기능 대신 Sequence로 유일한 값을 줄 수 있음.

-- 자동으로 번호를 1씩 증가시켜주는 시퀀스 생성
Create Sequence bno_seq
Increment by 1 
Start with 1 
NoMaxValue
Minvalue 1
NOCYCLE
Cache;

사용법 :  

CREATE SEQUENCE [ 시퀀스 이름]
INCREMENT BY [ 증가 OR 감소할 숫자]  -- 양수면 증가, 음수면 감소, 기본값 : 1 
START WITH   [ 시작숫자] -- 시작숫자의 기본값 : 증가일 때 MINVALUE , 감소일 때 MAXVALUE

[MAXVALUE N | NOMAXVALUE N] -- MAXVALUE :최대값을 N으로 설정. 시작숫자와 같거나 커야하고, MAXVALUE 보다 작아야 함. 
						    -- NOMAXVALUE : 기본값 : 증가일 때 1027 감소일 때 -1
                            
[MINVALUE | NOMINVALUE] -- MINVALUE : 최소값을  N으로 설정. 시작숫자와 작거나 같아야하고, MINVALUE 보다 커야함 
					    -- NOMINVALUE : 기본값 : 증가일 때 1 , 감소일 때 -1028
                        
[ CYCLE   | NOCYCLE]    -- CYCLE : 지정된 값이 최대값까지 증가하게 되면, 다시 START WITH의 [시작숫자]
                        --        에서 다시 시퀀스를 시작하도록 함.
                        -- NOCYCLE : 지정된 값이 최대값까지 증가하게 되면, 에러를 유발시킴 
[ CACHE  | NOCACHE ]    -- CACHE : 메모리 상의 시퀀스 값을 관리하도록 하는 것. 기본 값 20.
                        -- NOCACHE : 메모리 상에서 시퀀스를 관리하지 않음.

 

 

 시퀀스 관련 데이터 딕셔너리

 USER_SEQUENCE 는 시퀀스 객체의 정보를 보여주는 데이터 딕셔너리.

 

SEQUENCE_NAME : 시퀀스 객체의 이름을 저장합니다.

MIN_VALUE         :  최소값

MAX_VALUE        :  최대값

INCREMENT_BY   :  증가값

CYCLE_FLAG       :  사용하는지 Y / N 로 표현   

ORDER_FLAG       :  

CACHE_SIZE        :  캐시의 크기 

LAST_NUMBER    :  마지막 숫자 값