-
2021.8.19 작성
시퀀스(Sequence)
-유일한 값(UNIQUE)을 생성해주는 오라클 객체
-일련번호, 자동증가 값을 생성한다
-테이블과는 독립적으로 동작하기 때문에 하나의 시퀀스를 여러 테이블에서 사용할 수 있다
-메모리에 Cache하면 시퀀스값의 액세스 효율이 증가한다
-Primary key값을 생성하기 위해 많이 사용한다(숫자 자동으로 증가시켜 중복이 안 되는 고유값으로 사용)
-시퀀스 객체를 통해 순서대로 번호를 만들 수 있기 때문에 회원번호, 게시글 번호 등으로 활용할 수 있다
시퀀스 생성하기 (편의상 시퀀스 이름은 NAME으로 명명한다)
create SEQUENCE NAME [START WITH 시작번호] [INCREMENT BY 증가단위] [MAXVALUE 최대값] -- 디폴트 값 1028-1, 최댓값 무한대로 설정 [MINVALUE 최소값] -- 디폴트 값 1, 최솟값 무한대로 설정 [CYCLE | NOCYCLE] -- CYCLE: 최댓값 또는 최솟값의 도달 시 순환여부 설정 [CACHE | NOCACHE] -- CACHE: 메모리에 시퀀스 값의 할당 여부 설정
시퀀스 이름을 제외한 나머지는 생략이 가능하다
CYCLE | NOCYCLE은 시퀀스가 최댓값 혹은 최솟값이 되었을 때 시작값으로 돌아갈지 여부에 대한 설정이다.
순환여부 설정할 때 시퀀스+현재날짜를 조합하는 경우도 많다고 한다.
오라클을 기준으로 기본값은 다음과 같다
START WITH 1
INCREMENT BY 1
MAXVALUE (오라클 버전 내 최대값)
MINVALUE 1
NOCYCLE
CACHE 20
시퀀스 수정하기
ALTER SEQUENCE NAME [INCREMENT BY 증가단위] [MAXVALUE 최대값] [MINVALUE 최소값] [CYCLE | NOCYCLE] [CACHE | NOCACHE]
START WITH는 수정이 불가능하다
시퀀스 조회 및 추출
SELECT * FROM NAME; NAME.NEXTVAL -- 시퀀스 번호 추출 NAME.CURRVAL -- 현재 시퀀스 번호 확인
NEXTVAL과 CURRVAL은
서브쿼리가 아닌 select문, insert문의 select절, insert문의 value절, update문의 set절에서 사용할 수 있다
다음의 상황에서는 사용이 불가능하다
- view의 select절
- distinct 키워드가 있는 select문
- group by, having, order by절이 있는 select문
- select, delete, update의 서브쿼리
- create table, alter table 명령의 default값
시퀀스 삭제하기
DROP SEQUENCE NAME;
References 오라클시퀀스 사용법 https://mine-it-record.tistory.com/62
'Programming > 데이터베이스' 카테고리의 다른 글
[AWS/RDS] AWS의 RDS를 이용한 데이터베이스 구축 (0) 2022.08.18 [Mysql] password() 함수 (0) 2022.04.05 [MySQL] Auto_Increment 사용하기 (0) 2022.03.10 [MySQL] 계정 생성하고 권한 주기 (0) 2022.03.10 [MySQL] MySQL 설치하기(Window 10 기준) (0) 2022.03.10 댓글