시퀀스(SEQUENCE)
오라클에서는 행을 구분하기 위해서 기본키(PK)를 두고 있다.
기본키는 중복된 값을 가질 수 있으므로 항상 유일한 값을 가져야 하고,
기본키가 유일한 값을 갖도록 사용자가 직접 값을 생성해내려면 불편하기 때문에 시퀀스를 사용
시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동번호 발생기이므로
시퀀스를 기본키로 사용하게 되면 사용자의 부담을 줄일 수 있다.
즉)
-순차적으로 증가하는 값
-유일한 값으로 사용가능
-NUMBER 타입의 컬럼이 PK로 지정될때 시퀀스를 이용할수도 있습니다.
-테이블과는 독립적인 구조
시퀸스를 사용하기 위한 조건)
서브 쿼리가 아닌 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값
시퀀스 생성)
CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
START WITH
시퀀스 번호의 시작값을 지정할 때 사용됩니다. 만일 1부터 시작되는 시퀀스를 생성하려면 START WITH 1이라고 기술하면 됩니다.
INCREMENT BY
연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다. 만일 1씩 증가하는 시퀀스를 생성하려면 INCREMENT BY 1이라고 기술하면 됩니다.
MAXVALUE n | NOMAXVALUE
MAXVALUE 은 시퀀스가 가질 수 있는 최대값을 지정합니다. 만일 NOMAXVALUE를 지정하게 되면 ASCENDING 순서일 경우에는 1027승이고 DESCENDING 순서일 경우에는 -1로 설정됩니다.
MINVALUE n | NOMINVALUE
MINVALUE 은 시퀀스가 가질수 있는 최소값을 지정합니다. 만일 NOMINVALUE을 지정하게 되면 ASCENDING 순서일 경우에는 1이고 DESCENDING 순서일 경우에는 1026승으로 설정됩니다.
CYCLE | NOCYCLE
CYCLE 은 지정된 시퀀스 값이 최대값까지 증가가 완료되게 되면 다시 START WITH 옵션에 지정한 시작 값에서 다시 시퀀스를 시작하도록 합니다. NOCYCLE은 증가가 완료되게 되면 에러를 유발시킵니다.
CACHE n | NOCACHE
CACHE 은 메모리상의 시퀀스 값을 관리하도록 하는 것인데 기본 값은 20입니다. NOCACHE는 원칙적으로 메모리 상에서 시퀀스를 관리하지 않습니다.
시퀸스 조회)
: 전체 시퀸스 조회
SELECT * FROM USER_SEQUENCES;
: 해당 시퀸스 조회
SELECT 시퀸스명.CURRVAL FROM DUAL;
CURRVAL : 현재의 값을 알아낼때 사용된다.
테이블에 시퀸스 사용)
INSERT INTO 테이블 ( 컬럼,~~~ ) VALUESE (시퀸스명.NEXTVAL, 데이터,~~);
* 사용할 때 NEXTVAL을 사용 (NEXTVAL은 새로운 값 생성)
시퀸스 수정)
ALTER SEQUENCE 시퀸스명 변경할옵션
** 시작값(start)를 제외한 나머지 옵션들은 수정이 가능하다.
시퀀스 삭제)
DROP SEQUENCE 시퀀스명;
'DataBase' 카테고리의 다른 글
[Oracle] 제약조건 (0) | 2021.04.16 |
---|---|
[MySQL] 접속 (0) | 2021.04.15 |
[Oracle] 접속 (0) | 2021.04.14 |
[Oracle] LIKE 연산자 (0) | 2021.04.09 |
SQL (DDL/DML/DCL/TCL) (0) | 2021.04.09 |