SEQUENCE(시퀀스)의 기초
시퀀스는 정수 값을 생성해주는 데이터베이스의 객체이다.
이 객체는 공유할 수 있고, 고유 번호를 자동적으로 생성할 수 있다.
-> Primary key값중 정수값을 생성하는데 이용할 수 있다.
<User Data 와 Dictionary Data>
User Data : 사용자의 데이터가 저장하는건 실제 디스크에 공간을 받아야하는것
Dictionary Data : 딕셔너리데이터는 그러한 사용자 데이터를 유지보수 하기 위해 공유되는 별도의 공간을 가진다.
시퀀스는 Dictionary Data에 저장된다.
즉 별도의 저장공간이 필요하지 않는다.
생성해 놓으면 만들어진 SEQUENCE를 통해서 여러가지 SEQUENCE의 속성만 가지고 있으면 된다.
시퀀스를 생성하는 구문은 다음과 같다.
1 2 3 4 5 6 7 | CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; | cs |
구문 |
설명 |
sequence |
시퀀스의 이름 |
INCREMENT BY n |
시퀀스 번호 사이의 간격(기본값 1) |
START WITH n |
생성되는 시퀀스의 첫번째 번호 |
MAXVALUE n |
시퀀스의 최대값 |
NOMAXVALUE |
오름차순 시퀀스의 경우 최대값 10^27 내림차순의 경우 -1(기본값) |
MINVALUE n |
시퀀스의 최소값 |
NOMINVALUE |
오름차순 시퀀스의 최소값을 1, 내림차순시퀀의 경우 -(10^26) |
CYCLE | NOCYCLE |
최대 혹은 최소값에 도달후 시퀀스를 계속 생성할 지를 결정 |
CACHE n | NOCACHE |
OrACLE 서버가 메모리에 미리 할당하고 저장하는 값의 개수를 지정(기본값은 20) |
다음 예시를 보자.
1 2 3 4 5 | CREATE SEQUENCE TEST_SEQ START WITH 1 MAXVALUE 999999 NOCACHE NOCYCLE; | cs |
autoincrement 대신
1 | SELECT TEST_SEQ.NEXTVAL FROM DUAL; | cs |
를 사용한다.
현재 번호를 확인할때는
1 | SELECT TEST_SEQ.CURVAL FROM DUAL; | cs |
sequence를 확인할때
1 | SELECT * FROM USER_SEQUENCES; | cs |
를 사용한다.
시퀀스를 수정할 경우 다음의 구문을 사용한다.
1 2 3 4 5 6 | ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; | cs |
이때 주의할 점은 START한 번호는 바꿀 수가 없으므로 결국 다시 시퀀스를 만들어야한다.
주의할 점으로는 시퀀스는 한번 사용하면, 다시 쓸 수 없다. ROLLBACK을 포함해서 적용이 안된다. 그러므로, 데이터 값이 많을경우 중간에 없는 번호가 있을 수도 있다.
SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]동의어 기초 (0) | 2019.02.14 |
---|---|
[SQL]INDEX의 기초 (0) | 2019.02.14 |
[SQL]EXISTS 의 보충 (0) | 2019.02.11 |
[SQL]서브쿼리(SUBQUERY)의 종류 (0) | 2019.02.08 |
[SQL]이름 지정 규칙 (0) | 2019.02.08 |