꺄르륵
[Oracle SQL Developer] 기초 XIX - SEQUENCE 객체 본문
1.SEQUENCE
1.1. 설명
- 순서화된 정수를 반환하는 객체
- 테이블과 독립적으로 수행된다
- 자동으로 증가되는 값을 반환한다.
- 테이블 설계시 적당한 PK가 없는 경우 대체키로 사용된다.
- 시퀀스 값을 참조하기 위해 의사컬럼(Pseudo Column)을 사용한다.
(1) 시퀀스명.NEXTVAL : 시퀀스 객체의 다음에 오는 값을 반환한다.
(2) 시퀀스명.CURRVAL : 시퀀스 객체의 현재 값을 반환한다.
*** 시퀀스 객체 생성 후 반드시 첫 번째 명령으로 '시퀀스.NEXTVAL' 이 한번은 수행되어야 한다.
1.2. 사용형식
CREATE SEQUENCE 객체명
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[ORDER | NOORDER]
. START WITH n : n부터의 시작값 (DEFAULT 1(MINVALUE))
. INCREMENT BY n : n부터의 증가값 (DEFAULT 1)
. MAXVALUE n | NOMAXVALUE : 시퀀스의 최대값 설정 (DEFAULT NOMAXVALUE 10^27)
. MINVALUE n | NOMINVALUE : 시퀀스의 최소값 설정 (DEFAULT NOMINVALUE 1)
. CYCLE | NOCYCLE : 시퀀스의 최대/최소값에 도달 후 시퀀스의 사이클 여부 (DEFAULT NOCYCLE)
. CACHE | NOCACHE : 시퀀스의 값을 미리 메모리에 생성하는 캐시 여부 (DEFAULT NOCACHE)
. ORDER | NOORDER : 주어진 조건대로 생성을 담보한다(주문의 ORDER), (DEFAULT NOORDER)
EX) 시작값이 13이고 1씩 증가되는 SEQUENCE 생성하기
CREATE SEQUENCE SEQ_LPROD
START WITH 12;
INCREMENT BY 1
SELECT SEQ_LPROD.NEXTVAL FROM DUAL;
SELECT SEQ_LPROD.CURRVAL FROM DUAL;
EX) LPROD 테이블에 다음 자료를 추가 삽입하시오. LPORD_ID는 시퀀스를 사용하시오.
INSERT INTO LPROD VALUES (SEQ_LPROD.NEXTVAL, 'P504', '유아용품');
INSERT INTO LPROD VALUES (SEQ_LPROD.NEXTVAL, 'P503', '장난감');
SELECT * FROM LPROD;
DROP SEQUENCE SEQ_LPROD;
** 시퀀스 객체의 사용이 제한되는 경우
. SELECT, UPDATE, DELETE 문의 서브쿼리
. VIEW 의 쿼리
. DISTINCT 가 사용된 SELECT 절
. GROUP BY, ORDER BY 절이 있는 SELECT 절
. 집합연산자가 사용된 경우
. SELECT 문의 WHERE 절
. VIEW 생성시 CHECK OPTION
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 XXI - PL/SQL (0) | 2019.10.29 |
---|---|
[Oracle SQL Developer] 기초 XX - SYNONYM 객체 (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XVIII - INDEX (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XVII - VIEW (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XVI - DML (0) | 2019.10.29 |