[ORACLE] CREATE SEQ | 시퀀스 생성 방법
2022. 11. 15. 11:58
728x90
반응형
시퀀스란?
- 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.
- 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.
- 메모리에 Cache되었을 때 시퀀스값의 액세스 효율이 증가 한다.
- 시퀀스는 테이블과는 독립적으로 저장되고 생성된다.
시퀀스 생성
CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
- START WITH : 시퀀스의 시작 값을 지정한다. n을 1로 지정하면 1부터 순차적으로 시퀀스번호가 증가 한다.
- INCREMENT BY : 시퀀스의 증가 값을 지정한다. n을 2로 하면 2씩 증가한다.
- INCREMENT BY : 시퀀스의 증가 값을 지정한다. n을 2로 하면 2씩 증가한다.
START WITH를 1로, INCREMENT BY를 2로 설정하면 1, 3, 5, 7,.. 이렇게 시퀀스 번호가 증가한다.
- MAXVALUE : 시퀀스 최대값
- MINVALUE : 시퀀스 최소값
- CYCLE|NOCYCLE : 최대값 도달시 순환 여부
- CACHE | NOCACHE : CACHE 여부, 원하는 숫자만큼 미리 만들어 Shared Pool의 Library Cache에 상주시킨다.
- MAXVALUE : 시퀀스 최대값
- MINVALUE : 시퀀스 최소값
- CYCLE|NOCYCLE : 최대값 도달시 순환 여부
- CACHE | NOCACHE : CACHE 여부, 원하는 숫자만큼 미리 만들어 Shared Pool의 Library Cache에 상주시킨다.
시퀀스 수정
START WITH 값을 제외하고 ALTER SEQUENCE 명령어로 수정 할 수 있다.
-- 시퀀스 수정 Syntax
ALTER SEQUENCE sequence_name
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
시퀀스의 사용예
시퀀스 생성
empno를 자동 증가하는 시퀀스를 만들어 보자
-- 8000부터 시작하는 시퀀스를 생성하자
CREATE SEQUENCE seq_empno
START WITH 8000
INCREMENT BY 1
CACHE 20;
-- 시퀀스가 정상적으로 생성되었는지 조회해 보자
SELECT seq_empno.NEXTVAL FROM DUAL;
SELECT seq_empno.NEXTVAL FROM DUAL;
SELECT seq_empno.CURRVAL FROM DUAL;
시퀀스를 이용해서 데이터를 등록해 보자
CREATE SEQUENCE seq_empno
START WITH 8000
INCREMENT BY 1
CACHE 20;
-- 시퀀스가 정상적으로 생성되었는지 조회해 보자
SELECT seq_empno.NEXTVAL FROM DUAL;
SELECT seq_empno.NEXTVAL FROM DUAL;
SELECT seq_empno.CURRVAL FROM DUAL;
시퀀스를 이용해서 데이터를 등록해 보자
-- INSERT 시 시퀀스 사용
INSERT INTO emp
(empno,
ename, job, mgr,
hiredate, sal, comm, deptno)
VALUES (seq_empno.NEXTVAL,
'TIGER', 'MANAGER', 7839,
SYSDATE, 3000, null, 20);
-- SELECT 절에서 시퀀스 사용
CREATE TABLE emp2
AS
SELECT seq_empno.NEXTVAL as empno, ename,
job, mgr, hiredate, sal, comm, deptno
FROM emp;
-- 시퀀스가 정상적으로 반영되었는지 조회해 보자
SELECT * FROM emp;
728x90
반응형
'IT > oracle' 카테고리의 다른 글
[Oracle] LISTAGG WITHIN GROUP절 | 여러개의 열의 값을 한 행으로 조회 (0) | 2022.11.15 |
---|---|
[ORACLE] GRANT | 권한, synonym 생성 방법 (0) | 2022.11.15 |
[ORACLE] CREATE TABLE | 테이블 생성 방법 (0) | 2022.11.15 |
[ORACLE] CASE WHEN 구문 (1) | 2022.11.15 |
[ORACLE] ALTER TABLE 방법 (0) | 2022.11.15 |