본문 바로가기
DB/ORACLE

[oracle] 시퀀스 생성

by 쑨s 2022. 5. 2.
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
반응형

댓글