안녕하세요. 이번포스팅은 시퀀스(SEQUENCE)에 대해서 알아보는 포스팅이 되겠습니다.
우선 시퀀스가 무엇인지부터 알아볼까요?
시퀀스란?
- 테이블 내의 유일한 숫자를 자동으로 생성시켜 주는 역할을 합니다.
- 오라클에서 무결성을 위해 유일한 값을 가져야할 경우, 사용자의 부담을 덜어낼 수 있습니다.
그럼 시퀀스의 형식에 대해서 알아볼까요?
-
CREATE SEQUENCE sequence_name
-
[START WITH n]
-
[INCREMENT BY n]
-
[{MAXVALUE n | NOMAXVALUE}]
-
[{MINVALUE n | NOMINVALUE}]
-
[{CYCLE | NOCYCLE}]
-
[{CACHE n | NOCACHE}]
-
START WITH n : 시퀀스 번호의 시작을 지정합니다.
INCREMENT BY n : 연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다.
MAXVALUE n : 시퀀스의 최대값을 지정합니다.
MINVALUE n : 시퀀스의 최소값을 지정합니다.
CYCLE : 시퀀스 값이 최대값까지 증가되고 나면 START WITH에서 지정한 시작 값으로 시퀀스를 다시 시작합니다.
CACHE n : 메모리상에서 시퀀스 값을 관리하도록 하는 것으로 기본 값은 20입니다.
자 그럼 시퀀스를 생성하는 예제를 보실까요?
-
CREATE SEQUENCE Seq_Test
-
INCREMENT BY 1
-
START WITH 1;
시퀀스가 생성된 것이 보이실겁니다. ㅎㅎㅎ
이제는 생성된 시퀀스를 사용해 볼까요?
우선은 CURRVAL, NEXTVAL을 알아봐야합니다.
CURRVAL : 시퀀스의 현재 값을 알아내기 위해서 사용됩니다.
NEXTVAL : 시퀀스의 새로운 값을 할당 합니다.
CURRVAL 과 NEXTVAL을 사용가능한 경우와 사용가능하지 않은 경우를 알아보겠습니다.
●사용 가능한 경우
- 서브 쿼리가 아닌 SELECT 문
- INSERT문의 SELECT 절
- INSERT 문의 VALUE 절
- UPDATE 문의 SET 절
●사용이 불가능한 경우
- VIEW의 SELECT절
- DISTINCT 키워드가 있는 SELECT문
- GROUP BY, HAVING, ORDER BY 절이 있는 SELECT문
- SELECT, DELETE, UPDATE의 서브 쿼리
- CREATE TABLE, ALTER TABLE 명령의 DEFAULT 값
자 그럼 실제로 사용하는 예제를 진행하겠습니다.
-
INSERT INTO Index_Test VALUES(SEQ_TEST.NEXTVAL, '열청', 'SKAWKSLRK',SYSDATE);
INDEX_TEST테이블은 바로 전 포스팅의 테스트용으로 만든 테이블입니다.
우선 여기에는 데이터가 하나 들어있어서
시퀀스의 START WITH를 2로 바꾸어 진행했습니다.
결과를 보시면 제대로 시퀀스가 적용된 것을 보실수 있으실겁니다.
시퀀스를 삭제 하고 싶으시면,
-
DROP SEQUENCE 시퀀스 이름;
위와 같이 해주시면 해당 시퀀스가 삭제 됩니다.
이렇게 시퀀스에 대해서 알아보았습니다.
모두 열공 하세요 ^_^
'SQL > ORACLE함수' 카테고리의 다른 글
[ORACLE 함수] Date함수 (0) | 2017.10.30 |
---|---|
MAX() OVER (PARTITION BY ..) (0) | 2016.01.28 |
오라클(Oracle) SUBSTR 함수로 문자열을 다양하게 자르는 방법 (0) | 2016.01.04 |
[오라클] MOD, TRUNC, EXTRACT (0) | 2015.11.20 |
날짜함수 (0) | 2015.11.20 |
오라클 요일함수-주간 요일 찾기 (0) | 2015.11.20 |
Oracle 오라클 trunc() 함수로 날짜 자르는법 방법 (0) | 2015.11.20 |
Oracle 오라클 SYSDATE(시스템시간=현재시간)을 년도만 보여주기 (0) | 2015.11.20 |