본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 시퀀스(Sequence)

//시퀀스, 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