//시퀀스, Sequence
- 데이터베이스 객체 중 하나
- 오라클 전용 객체(다른 DBMS에는 없음)
- 일련 번호를 생성하는 객체****
- (주로) 식별자를 만드는 용도로 많이 사용한다. > PK 컬럼에 일련 번호를 넣을 때 많이 사용한다.
- 시퀀스 객체 생성하기
- create sequence 시퀀스명 [옵션];
- 시퀀스 객체 삭제하기
~ drop sequence 시퀀스명;
- 시퀀스 객체 사용하기
~ 시퀀스명.nextVal
- 시퀀스 객체가 숫자를 만드는 함수
- 호출할 때마다 숫자 증가
- 주로 사용
~ 시퀀스명.currVal
- 시퀀스 객체가 마지막에 만든 숫자를 확인하는 함수
- 호출할 때마다 숫자 증가X
- 로그인을 한 뒤 (접속) 최소 1회 이상 nextVal를 호출하고 난 뒤에만 호출할 수 있다. > 가끔 사용
select seqNum.nextVal from dual;
select 'ABC' || seqNum.nextVal from dual;
select 'ABC' || to_char(seqNum.nextVal, '0000') from dual;
select 'ABC' || ltrim(to_char(seqNum.nextVal, '0000')) from dual;
// 옵션
~ increament by n > 증감치★
~ start with n > 시작값★
~ mavalue n > 최댓값
~ minvalue n > 최솟값
~ cycle > 루프
~ cache n > 캐시
drop sequence seqNum;
create sequence seqNum
start with 200;
create sequence seqNum
increment by 100;
create sequence seqNum
increment by -1;
create sequence seqNum
start with 100
increment by -1
maxvalue 100;
create sequence seqNum
maxvalue 10;
create sequence seqNum
increment by -1
minvalue -10;
create sequence seqNum
increment by 1
start with 1
maxvalue 10
cycle
cache 5;
select seqNum.nextVal from dual;
// 툴 이용
- 다음으로 시작: 원하는 숫자로 시작할 수 있다. 값을 입력하지 않으면 1부터 시작
- 증분: 몇씩 증가할 것인가? 값을 입력하지 않으면 1씩 증가
- 최대값: 일반적으로 따로 지정하지 않음.
- 캐시: 자주 뽑아야 할 경우, 캐시를 설정하여 다음번에 더 빠르게 뽑을 수 있게 함(미리 뽑아놔라~)
- 주기: 최대값까지 도달했을 때 다시 처음으로 돌아가서 시작할 것인가?
- 정렬: 캐시에 있는 데이터를 사용할 경우, 정렬되어 있는 데이터를 사용할 것인가?
--다음 값 알아내기
SELECT NOTICE_ID_SEQ.NEXTVAL FROM DUAL;
※매번 NOTICE_ID_SEQ를 적어주는 것이 귀찮다면 미리 지정할 수 있다.
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
[Oracle] Pseudo (0) | 2023.03.22 |
---|---|
[Oracle]식별자 (0) | 2023.03.20 |
[Oracle] 제약사항 (0) | 2023.02.22 |
[Oracle] 뷰(VIEW) (0) | 2023.02.21 |
[Oracle] 유니온(UNION) (0) | 2023.02.21 |