
create sequence seq1
start with 1 -- 시작 숫자
increment by 1 -- 증가치
maxvalue 100 -- 최댓값
minvalue -1 -- 최솟값
nocycle -- 순환여부
cache 20; -- 메모리에 미리 올려놓을 번호의 갯수
100을 초과하니 에러발생
: 시퀀스 SEQ1.NEXTVAL exceeds MAXVALUE은 사례로 될 수 없습니다
-- 한번 실행할 때마다 1씩 증가
select seq1.nextval
from dual;
sequece의 maxvalue 수정
alter sequence seq1
maxvalue 200;
create table cuppang_order
( order_id number(10),
prod_name varchar2(50),
prod_cnt number(10) );
create sequence cuppang_seq
start with 1
increment by 1
maxvalue 1000000 -- minvalue 따로 안쓰면 기본값으로 설정됨
nocycle
cache 20;
-- 번호가 중복되지 않고 순서대로 들어감
insert into cuppang_order
values(cuppang_seq.nextval, '서울우유', 2);
insert into cuppang_order
values(cuppang_seq.nextval, '아이폰', 1);
insert into cuppang_order
values(cuppang_seq.nextval, '블루베리', 1);
select * from cuppang_order;
📌
insert into 테이블명
values(시퀀스명.nextval, ..., ...);
create table bae_order
( order_id number(10),
prod_name varchar2(50),
prod_cnt number(10) );
create sequence bae_seq
start with 1
increment by 1
maxvalue 1000000
nocycle
cache 20;
insert into bae_order
values(bae_seq.nextval, '떡볶이', 3);
insert into bae_order
values(bae_seq.nextval, '치킨', 2);
insert into bae_order
values(bae_seq.nextval, '마라탕', 1);
insert into bae_order
values(bae_seq.nextval, '피자', 4);
select * from bae_order;
alter sequence bae_seq
increment by 2
maxvalue 10000000
cycle
cache 30;
select *
from user_sequences;
💡 start with는 변경할 수 X
dba에게 중요한 속성은 cache 사이즈
동시에 insert 하는 세션들이 몰려올 때 입력 성능이 느려지지 않게하려면 cache 사이즈를 늘려야 함
select *
from user_sequences;
alter sequence cuppang_seq
cache 100;
select *
from user_sequences;
select 'drop sequence ' || lower(sequence_name) || ';'
from user_sequences;
drop sequence bae_seq;
drop sequence cuppang_seq;
drop sequence seq1;

질문: ORD_ITEMS 테이블과 ORD_SEQ 시퀀스에 대해 올바른 설명 두 가지는? (두 개 선택)
A. 시퀀스 ORD_SEQ가 삭제되면, ORD_ITEMS 테이블의 ORD_NO 컬럼의 기본값은 NULL이 됩니다.
B. ORD_ITEMS 테이블에 데이터를 삽입하려는 사용자는 시퀀스 ORD_SEQ에 접근할 수 있는 권한이 있어야 합니다.
C. ORD_NO 컬럼은 ORD_SEQ 시퀀스로부터 다음 번호를 자동으로 받아옵니다 (ORD_NO에 값을 명시하지 않으면).
D. ORD_SEQ 시퀀스는 5000개 숫자를 생성한 후 1로 되돌아갑니다. 그리고 최대 20번까지 순환할 수 있습니다.
E. ORD_SEQ 시퀀스는 중복 숫자가 발생하지 않도록 보장합니다.
✅ B: 시퀀스를 사용하려면 권한이 필요합니다.
✅ C: DEFAULT ord_seq.NEXTVAL이기 때문에, 값을 명시하지 않으면 자동으로 시퀀스에서 값을 받아옵니다.
NULL이 되는 건 아닙니다.CACHE 5000은 성능을 위한 값이고, CYCLE만 설정되어 있을 뿐 5000개마다 순환한다는 건 사실이 아닙니다.CYCLE 옵션 때문에 중복 숫자가 발생할 수 있음 (MAXVALUE 도달 후 다시 1부터 시작)