Sequence는 자동으로 증가하는 Object이다.
데이터에 번호를 붙일 때 사용하며 키값으로 자주 사용한다.
-- 1) 시퀀스 생성
-- CREATE SEQUENCE [sequence name]
-- [START WITH n] [INCREMENT BY n]
-- [MAXVALUE n | NOMAXVALUE]
-- [MINVALUE n | NOMINVALUE]
-- [CYCLE | NOCYCLE]
-- [CACHE | NOCACHE]
-- START WITH n : 시퀀스의 시작값 n 설정(default : 1)
-- INCREMENT BY n : 시퀀스 증가값 n 설정(default:1)
-- MAXVALUE n : 최대값 n 설정(지정하지 않으면 9999....,n을 넘으면 에러)
-- MINVALUE n : 최소값 n 설정(default:1)
-- CYCLE:최대값 도달시 순환 여부(default:nocycle)
-- cycle 선언시 cache 필요
-- CACHE : 원하는 숫자만큼 미리 만들어 저장
-- 1-1) 일반적인 시퀀스 생성
CREATE SEQUENCE seq_empno;
-- 1-2) 8000 부터 시작하고 2만큼 증가하며 20개씩 저장하는 시퀀스
CREATE SEQUENCE seq_empno
START WITH 8000 INCREMENT BY 2 CACHE 20;
-- 시퀀스 증가
SELECT seq_empno.NEXTVAL FROM DUAL;
-- 현재 시퀀스 값 확인
SELECT seq_empno.CURRVAL FROM DUAL;
-- 2) 기타 옵션들
CREATE SEQUENCE seq_test_max MAXVALUE 10;
-- MAX VALUE가 10이므로 11번째 에러가 나타난다.
SELECT seq_test_max.NEXTVAL FROM DUAL;
-- CYCLE 옵션 + CACHE가 필요
CREATE SEQUENCE seq_test_cycle START WITH 5 MAXVALUE 10 CYCLE CACHE 5;
SELECT seq_test_cycle.NEXTVAL FROM DUAL;
-- CYCLE 옵션 + CACHE + MINVALUE
CREATE SEQUENCE seq_test_min START WITH 5 MINVALUE 5 MAXVALUE 10 CYCLE CACHE 5;
SELECT seq_test_min.NEXTVAL FROM DUAL;
-- 3) 시퀀스의 실제 활용 예시
SELECT * FROM emp;
-- emp 테이블을 활용에 적절하게 변경
ALTER TABLE emp ADD(emp_no NUMBER(5));
INSERT INTO emp (emp_no, ename, job, deptno, hiredate) VALUES (seq_empno.NEXTVAL, 'oh', 'manager', 3, SYSDATE);
SELECT * FROM emp;
-- 4) 시퀀스 수정(START WITH n을 제외한 나머지 옵션 수정 가능)
ALTER SEQUENCE seq_empno INCREMENT BY 10 CACHE 40;
SELECT seq_empno.NEXTVAL FROM DUAL;
-- 5) 시퀸스 검색
SELECT * FROM USER_SEQUENCES;
-- 6) 시퀸스 삭제
DROP SEQUENCE seq_text_max;
'Oracle DB 11g > 02.활용, SQL' 카테고리의 다른 글
[DB]02-13.Oracle DB 문자형 함수(Char Function) (0) | 2018.10.12 |
---|---|
[DB]02-12.Oracle DB 집계함수(COUNT, MAX, MIN, AVG, ROUND, SUM) (0) | 2018.10.12 |
[DB]02-10.Oracle DB 뷰(View) (0) | 2018.10.08 |
[DB]02-09.Oracle DB 정규화(Normalization), 역정규화(Denormalization), 색인(Index) (0) | 2018.10.08 |
[DB]02-08.Oracle DB 합집합(UNION), 교집합(INTERSECT), 차집합(MINUS) (0) | 2018.10.08 |