728x90
시퀀스(SEQUENCE)
시퀀스는 호출될 때마다 자동으로 숫자를 생성하는 Oracle 객체로서 테이블의 특정 컬럼값을 넘버링하기 위해 사용된다. 주로 게시판의 글 번호에 순차적인 넘버링을 적용하는 경우에 사용된다.
CREATE SEQUENCE 시퀀스명
[ START WITH n]
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE ]
[ CACHE n | NOCACHE ]
START WITH n
: 시퀀스 번호의 시작값 (생략시 1부터 시작)INCREMENT BY n
: 시퀀스 번호의 증가치 (생략시 1씩 증가)MAXVALUE n
: 시퀀스가 가질 수 있는 최대값MINVALUE n
: 시퀀스가 가질 수 있는 최소값CYCLE
: 시퀀스 값이 최대값까지 증가가 완료되면 MINVALUE 값부터 다시 시작NOCYCLE
: 시퀀스 값이 최대값까지 증가가 완료되면 에러 발생CACHE
: 성능향상을 위해 메모리상의 시퀀스 값을 미리 만들어서 필요시 바로 제공NOCACHE
: 필요할 때마다 매번 시퀀스 값을 계산해서 반환
💡 시퀀스(sequence) 정보 출력
SELECT * FROM user_sequences;
💡 테이블에 시퀀스값 저장
-- 부서 번호를 자동생성한느 시퀀스 생성
CREATE SEQUENCE dept_deptno_seq
START WITH 10
INCREMENT BY 10
NOCYCLE;
-- deptno 컬럼값으로 시퀀스명.NEXTVAL 지정하여 자동 생성된 값 저장
INSERT INTO dept (deptno,dname,loc)
VALUES ( dept_deptno_seq.NEXTVAL, '개발','서울');
INSERT INTO dept (deptno,dname,loc)
VALUES ( dept_deptno_seq.NEXTVAL, '인사','경기');
INSERT INTO dept0(deptno,dname,loc)
VALUES ( dept_deptno_seq.NEXTVAL, '관리','부산');
COMMIT;
NEXTVAL과 CURRVAL
- 지정된 시퀀스의 값을 증가시키고 싶다면
시퀀스명.NEXTVAL
- 현재 시퀀스를 알고싶다면
시퀀스명.CURRVAL
시퀀스 수정
ALTER SEQUENCE 시퀀스명
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE ]
[ CACHE n | NOCACHE ]
START WITH n
옵션은 변경 불가능
시퀀스 삭제
DROP SEQUENCE 시퀀스명;
728x90
'Database > SQL' 카테고리의 다른 글
[Oracle/SQL] SQL Developer 계정 생성 (0) | 2023.08.11 |
---|---|
[SQL] 인덱스 (INDEX) (0) | 2023.08.01 |
[SQL] 뷰 (VIEW) (0) | 2023.08.01 |
[SQL] DDL (Data Definition Language, 데이터 정의어) (0) | 2023.07.31 |
[SQL] DML (Data Manipulation Language, 데이터 조작어) (0) | 2023.07.31 |