728x90
반응형
들어가기 전에
이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.
이번 포스팅에서는 규칙에 따라 순번을 생성하는 시퀀스에 대해 알아보도록 하겠습니다.
시퀀스(Sequence)
시퀀스(Sequence)란, 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체입니다.
시퀀스 기본 형식
CREATE SEQUENCE [시퀀스 이름]
[INCREMENT BY n] -- 시퀀스에서 생성한 번호의 증가값(default 1)(선택)
[START WITH n] -- 시퀀스에서 생성할 번호의 시작값(선택)
[MAXVALUE n | NOMAXVALUE] -- 시퀀스에서 생성할 번호의 최댓값(NOMAXVALUE: 오름차순 10^27, 내림차순 -1)(default NOMAXVALUE)(선택)
[MINVALUE n | NOMINVALUE] -- 시퀀스에서 생성할 번호의 최솟값(NOMINVALUE: 오름차순 1, 내림차순 10^(-26))(default NOMINVALUE)(선택)
[CYCLE | NOCYCLE] -- CYCLE로 설정할 경우, 시퀀스에서 생성한 번호가 최댓값에 도달했을 때 시작 값(START WITH)에서 다시 시작(defulat NOCYCLE)(선택)
[CACHE n | NOCACHE] -- 시퀀스가 생성할 번호를 메모리에 미리 할당해 놓은 수로, NOCACHE이 경우 미리 생성하지 않음(선택)
;
시퀀스 사용 예시
먼저, 시퀀스를 사용해보기 위해 DEPT
테이블과 열 구성은 같고 데이터는 없는 DEPT_SEQUENCE
를 생성합니다. 기존 DEPT
테이블을 이용해 테이블을 생성하되, 데이터는 없도록 조건절에 1<>
1을 작성하였습니다.
이제, DEPT_SEQUENCE
의 DEPTNO
로 사용할 시퀀스를 생성해보겠습니다. 아래와 같이 시퀀스를 생성한 후 USER_SEQUENCES
를 조회하여 시퀀스가 제대로 생성되었는지 확인할 수 있습니다.
생성된 시퀀스를 사용할 때는 [시퀀스 이름.CURRVAL]
과 [시퀀스 이름.NEXTVAL]
을 사용할 수 있습니다.
CURRVAL
: 시퀀스에서 마지막으로 생성한 번호를 반환- 시퀀스를 생성하고 바로
CURRVAL
을 사용하면 번호가 만들어진 적이 없어 오류 발생
- 시퀀스를 생성하고 바로
NEXTVAL
: 다음 번호를 생성
이제, SEQ_DEPT_SEQUENCE
를 사용해 DEPT_SEQUENCE
테이블에 새로운 부서를 추가해보도록 하겠습니다.
SEQ_DEPT_SEQUENCE
를 처음 사용하였기 때문에,DEPTNO
에 시작 값(START WITH
)인10
이 들어갔음을 확인할 수 있습니다.- 시퀀스를 사용하게되면,
SEQ_DEPT_SEQUENCE.CURRVAL
에 마지막으로 사용한 값이 들어갑니다.
시퀀스 수정
ALTER
명령어를 이용하면 시퀀스를 수정할 수 있습니다. 시퀀스 수정 시, 다른 옵션들은 수정이 가능하지만 START WITH
값은 변경이 불가능합니다.
ALTER SEQUENCE [시퀀스 이름]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
;
시퀀스 삭제
DROP
명령어를 사용하면 시퀀스를 삭제할 수 있습니다. 시퀀스를 삭제해도 기존에 시퀀스를 사용해 추가된 데이터는 삭제되지 않습니다.
DROP SEQUENCE [시퀀스 이름];
참고 자료
- CREATE SEQUENCE
- 오라클로 배우는 데이터베이스 입문(이지훈 저)
728x90
반응형
'DB > Oracle' 카테고리의 다른 글
[ORACLE] DataGrip에서 프로시저 수행하기 (0) | 2022.12.04 |
---|---|
[Oracle] 공식 별칭을 지정하는 동의어(Synonym) (0) | 2022.05.28 |
[Oracle] Orange 단축키 (0) | 2022.05.24 |
[Oracle, macOS] 오라클 튜닝 에센셜 실습 환경 구성하기 (0) | 2022.05.22 |
[Oracle] 데이터를 추가/수정/삭제하는 데이터 조작어(DML) (0) | 2022.05.09 |