* 시퀀스 (SEQUENCE)
: 자동으로 번호를 발생 시켜주는 역할을 하는 객체
정수를 순차적으로 일정한 값마다 증가시키면서 생성
시퀀스 생성하기 :
시퀀스도 객체
START WITH 숫자 --> 처음 발생 시킬 시작 값 지정
INCREMENT BY 숫자 --> 얼마만큼씩 증가시킬 것인지에 대한 값 지정[기본값 : 1]
MAXVALUE 숫자 --> 최대값 [기본값 엄청 큼]
MINVALUE 숫자 --> 최소값 [기본값 : 1]
CYCLE || NOCYCLE --> 값 순환 여부 [기본값 NOCYCLE]
CYCLE: 시퀀스 값이 최대값에 도달하면 최소값으로 다시 순환하도록 설정
NOCYCLE: 시퀀스 값이 최대값에 도달하면 더 이상 증가시키지 않도록 설정
NOCACHE CACHE 숫자 --> 캐시메모리 할당 여부 [기본값: CACHE 20]
캐시메모리: 미리 발생될 값들을 생성해서 저장해두는 공간
매번 호출할 때마다 새로 번호를 생성하는 것이 아니라
캐시메모리라는 공간에 미리 생성된 값들을 가져다가 사용 (속도가 빠름!)
CREATE SEQUENCE SEQ_TEST;
* 현재 계정이 가지고 있는 시퀀스를 조회
SELECT * FROM USER_SEQUENCES;
* 시퀀스 생성하기
SEQ_EMPNO라는 이름의 시퀀스 생성
(시작 번호를 300, 증가값은 5, 최대값은 310, 순환 x 캐시메모리 x)
CREATE SEQUENCE SEQ_EMPNO
START WITH 300 -- 시작번호를 300
INCREMENT BY 5 --> 증가값은 5
MAXVALUE 310 -- > 최대값 310
NOCYCLE --> 순환 X
NOCACHE --> 캐시메모리 X
* 시퀀스 사용하기 *
시퀀스명.CURRVAL : 현재 시퀀스 값(마지막으로 성공한 NEXTVAL의 수행한 값)
시퀀스명.NEXTVAL : 시퀀스 값에 일정한 값을 증가 시켜 발생한 결과값
-- > 현재 시퀀스 값에서 INCREMENT BY 설정된 값 만큼 증가된 값
SELECT SEQ_EMPNO.CURRVAL FROM DUAL;
시퀀스명.CURRVAL :
-- 오류 발생! NEXTVAL를 한번도 수행하지 않은 이상 CURRVAL는 사용할 수 없다
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL;
최대값을 넘었을 때 실행할 경우 오류가 발생된다.
* 시퀀스 구조 변경하기 *
* 시퀀스 구조 변경하기 *
ALTER SEQUENCE 시퀀스명
[INCREMENT BY 숫자] --> 증가값 (기본값: 1)
[MAXVALUE 숫자] --> 최대값 (기본값: 엄청큼..)
[MINVALUE 숫자] --> 최소값 (기본값: 1)
[CYCLE | NOCYCLE] --> 값 순환여부 (기본값: NOCYCLE)
[NOCACHE | CACHE 숫자] --> 캐시메모리 사용여부. 숫자(바이트단위) (기본값: CACHE 20)
=> START WITH 변경 불가!
ALTER SEQUENCE SEQ_EMPNO
INCREMENT BY 10
MAXVALUE 400;
EMPLOYEE 테이블에 시퀀스 적용
-> 시퀀스 사용 컬럼: 사원번호 (EMP_ID)
DROP SEQUENCE SEQ_EID;
-- * 시퀀스 삭제하기
* 시퀀스 생성하기
CREATE SEQUENCE SEQ_EID
START WITH 300 -- 시작번호 : 300
NOCACHE; -- 캐시메모리 사용 X
INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, EMP_NO, JOB_CODE, HIRE_DATE)
VALUES (SEQ_EID.NEXTVAL, '조건웅', '990928-1111111', 'J4', SYSDATE);
'ORACLE SQL' 카테고리의 다른 글
ORACLE SQL DDL 복습 내용 정리 (0) | 2024.07.30 |
---|---|
ORACLE SQL_DML (0) | 2024.07.29 |
ORACLE PL/SQL (0) | 2024.07.29 |
ORACLE SQL DDL_02 (0) | 2024.07.28 |
ORACLE SQL DDL_01 (0) | 2024.07.27 |