반응형
시퀀스(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;
반응형
'데이터베이스 > 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 |