반응형
기본키와 같은 값이 절대 없어서는 안될 데이터들을 값을 추가할때마다 중복되지 않는 값을 찾아 넣는다는건 데이터양이 많으면 많을수록 쉽지 않은 일이 될것이다. 이러한 경우 오라클에서는 시퀀스를 이용하여 값을 자동으로 줄 수 있다.
시퀀스란 자동으로 값을 증가시켜 반환하는 데이터베이스 객체이다. 보통 PRIMARY KEY의 값을 생성하기위해 많이 사용한다. 사용자가 정의한 숫자부터 증감될 값을 정하여 그 값만큼 자동으로 증감한다.
시퀀스(SEQUENCE) 생성
-- 가장 기본적인 문법
CREATE SEQUENCE 시퀀스명
START WITH 시작숫자
INCREMENT BY 증감숫자;
-- 그 외에 속성들
CREATE SEQUENCE 시퀀스명
START WITH 시작숫자
INCREMENT BY 증감숫자
[NOMAXVALUE || MAXVALUE 최대값] -- MAXVALUE는 최대값
[NOMINVALUE || MINVALUE 최소값] -- MINVALUE는 최소값
[CYCLE || NOCYCLE] -- 기본값은 nocycle, cycle 설정시 최대값에 도달 했을때 다시 최소값부터 시작하게 된다.
[CACHE || NOCACHE] -- NOCACHE 설정시 시퀀스의 캐시값을 0이 된다.
NOMAXVALUE : 디폴트 값이며 최대값은 10의 27승이다. 무한이라고 생각하면된다.
NOMINVALUE : 디폴트 값이며 값이 감소일때 -10의 27승까지이다. 무한이라고 생각하면된다.
시퀀스 사용
예시로 먼저 시퀀스를 생성하겠다. 그뒤 테이블에 값을 넣을때 어떻게 시퀀스가 쓰이는지 알아보겟다.
-- 시퀀스 생성 예
CREATE SEQUENCE seq_test
START WITH 1
INCREMENT BY 1
NOCACHE;
-- 시퀀스 사용 예
INSERT INTO test VALUES (seq_test.NEXTVAL, '아무개', '서울');
INSERT INTO test VALUES (seq_test.NEXTVAL, '지우개', '부산');
시퀀스명 뒤에 NEXTVAL이나 CURRVAL이 .
다음에 올 수 있다.
NEXTVAL : 현재 시퀀스 값의 다음값을 반환한다. (설정한 증감만큼)
CURRVLA : 현재 시퀀스 값을 반환한다.
시퀀스 수정
ALTER SEQUENCE 시퀀스명
[INCREMENT BY 증가값]
[MAXVALUE 최대값]
[MINVALUE 최소값]
[CYCLE || NOCYCLE]
[CACHE || NOCACHE]
수정도 생성과 크게 다르지 않지만 생성할때 시작값을 정해주는 START WITH
는 수정할 수 없다.
시퀀스 삭제
DROP SEQUENCE 시퀀스명;
시퀀스 조회
-- 해당 시퀀스 값 조희
SELECT 시퀀스명.CURRVAL FROM DUAL
-- 전체 시퀀스 조회
SELECT * FROM 시퀀스명
반응형
'DATABASE > Oracle' 카테고리의 다른 글
[ORACLE] 커서(CURSOR) 종류, 생성, 사용 (0) | 2020.02.07 |
---|---|
[ORACLE] 기본적인 뷰 생성, 수정, 조회, 삭제 (0) | 2020.02.06 |
[ORACLE] CONSTRAINT 제약조건 생성,삭제, PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY, CHECK, DEFAULT (0) | 2020.02.05 |
[ORACLE] 기본적인 OUTER JOIN (외부 조인) (0) | 2020.02.04 |
[ORACLE] EQUI JOIN (동등 조인, 등가 조인) (0) | 2020.02.04 |