728x90
반응형
[oracle] 시퀀스 생성
개인적으로 내가 테이블을 설계할때는 시퀀스를 생성하여 사용하지는 않지만, 기록용으로 저장해두고자 한다.
(사용하지 않으면 까먹기 때문에..)
오라클의 시퀀스는 무엇인가?
- 유일(UNIQUE)한 값을 생성해주는 오라클 객체
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.
- 보통 PRIMARY KEY 값을 생성하기 위해 사용
- 메모리에 Cache되었을 때 SEQUENCE 값의 액세스 효율이 증가
- SEQUENCE는 테이블과는 독립적으로 저장되고 생성된다. 즉, 하나의 SEQUENCE를 여러 테이블에서 쓸 수 있다.
스크립트 구성
create sequence sequence_name
[start with n] // 시퀀스 시작값 n 지정
[increment by n] // 시퀀스 증가값 n 지정
[maxvalue n | nomaxvalue] // 시퀀스 최대값 n | nomaxvalue는 무한
[minvalue n | nomaxvalue] // 시퀀스 최소값 n | nomaxvalue는 무한
// 테이블 생성
CREATE TABLE t_test (
idx NUMBER PRIMARY key,
title VARCHAR2(10),
price NUMBER,
in_date date
);
// 시퀀스 생성
CREATE SEQUENCE seq_num INCREMENT BY 1 START WITH 1 MAXVALUE 100000;
// 현재 값 반환
seq_num.currval
// 현재 시퀀스 값의 다음 값 반환
seq_num.nextval
// 10개 데이터 삽입 예제
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'볼펜','5000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'A4','30000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'싸인펜','500',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'지우개','500',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'연필','500',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'노트','1000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'필통','1000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'마우스','10000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'키보드','20000',sysdate);
INSERT INTO t_test VALUES(seq_num.NEXTVAL,'가방','100000',sysdate);
728x90
반응형
'DB > ORACLE' 카테고리의 다른 글
[oracle] instr 문자열에서 특정값 위치 찾기 (0) | 2022.05.09 |
---|---|
[oracle] 테이블 이름 바꾸기 / 컬럼 추가, 컬럼 삭제, 컬럼 수정 스크립트 (0) | 2022.05.09 |
[oracle] 테스트 데이터 만들기 (0) | 2016.02.12 |
[oracle] 오라클의 중복 데이터 찾는 쿼리 (0) | 2013.09.02 |
댓글