시퀀스(뜻: 순서, 연속)
데이터베이스에서는 "순차적으로 증가하며 감소되는 값을 제공"하는 데이터베이스 객체이다.
일반적으로 시퀀스는 테이블의 기본키를 생성(중복값 x) ->쿼리만으로 충분히 구현 가능
테이블 내의 유일한 숫자를 자동으로 생성 즉, 사용자가 직접 값을 생성하는 부담감을 줄임
'시퀀스 형식'
[start with n] 시작할 값을 정한다.
[INCREMENT BY N ] 연속적인 시퀀스 번호의 증가치를 지정할 때 사용
MINVALUE = 양수 MAXVALUE = 음수
[NOMINVALUE | MINVALUE n]
NOMINVALUE = 최솟값을 제한이 없음, 디폴트 값 MINVALUE = 최솟값을 설정
NOMAXVALUE를 지정하면 ASCENDING(오름차순) 순서일 경우에는 1
DECENDING 순서일 경우에는 10(26)승로 설정
[NOMAXVALUE | MAXVALUE n]
NOMAXVALUE = 최댓값을 제한이 없음, 디폴트 값 MAXVALUE = 최댓값을 설정
NOMAXVALUE를 지정하면 ASCENDING(오름차순) 순서일 경우에는 10(27)승
DECENDING 순서일 경우에는 –1로 설정
<!--[if !supportEmptyParas]--> <!--[endif]-->
[cycle | nocycle]
cycle 시퀀스가 최대값 도달 후 다시 처음부터 시퀀스 생성
nocycle은 죄대값에 도달해도 다시 시퀀스를 생성하지 못한다.
<!--[if !supportEmptyParas]--> <!--[endif]-->
[cache n | nocache]
cache n은 메모리상에서 시퀀스 값을 관리하도록 하는 것으로 기본 값을 20입니다.
nocache는 메모리상에서 시퀀스를 관리하지 않습니다.
'시퀀스 사용'
[시퀀스 이름, currval] currval은 시퀀스에서 마지막으로 생성한 번호를 반환(현재 값)
currval의 경우, 시퀀스를 생성하고 바로 사용하면 번화가 만들어진 적이 없으므로 오류가 발생.
[시퀀스 이름, nextval] nextval은 다음 번호를 생성(다음 값)
시퀀스에서 생성한 순번을 사용한 insert문 실행 즉, 초기값을 설정해준다.
nextval, currval을 사용할 수 있는 경우
- 서브쿼리가 아닌 select문
- insert문의 select절
- insert문의 value절
- update문의 set절
nextval, currval을 사용할 수 없는 경우
- view의 select절
- Distinct 키워드가 있는 select문
- group by, having, order by 절이 있는 select문
- select, delete, update의 서브 쿼리
- create table alter table 명령의 default 값
'시퀀스 생성'
우선 테이블을 먼저 생성해준다. 지금 예제에서는 'student'
시퀀스 생성
시퀀스 생성 확인 예제 1
시퀀스 생성 확인 예제 2
테이블에 데이터 추가
현재 시퀀스의 값을 확인
select stu.seq.currval from dual;
'시퀀스 수정'
alter문을 이용하여 시퀀스 수정이 가능하다. create문의 구조와 거의 동일하다.
* 주의 사항 *
start 값은 수정이 불가능하기 때문에 시작 값을 시 지정하려면 삭제 후 생성을 해야한다.
'시퀀스 삭제'
drop sequence stu_sequences;
삭제 확인
select * from user_sequence;
테이블 검색
select * from student;
'DataBase' 카테고리의 다른 글
DataBase[뷰 개념, 생성, 삭제, 수정][뷰 권한 오류] (0) | 2018.11.12 |
---|---|
트랜잭션 (0) | 2018.11.09 |
[데이터베이스 문자 함수][dual이란?] (0) | 2018.11.07 |
데이터 베이스 인데스[개념][생성/변경/삭제] (0) | 2018.11.07 |