-- SEQUENCE(시퀀스) 생성
create sequence jno_seq
increment by 1
start with 100
maxvalue 110
minvalue 90
cycle
cache 2;
-- SEQUENCE 생성 및 각종 옵션 테스트
create table s_order
(ord_no number(4),
ord_name varchar2(10),
p_name varchar2(20),
p_qty number);
insert into s_order
values (jno_seq.NEXTVAL, 'James', 'apple', 5);
insert into s_order
values (jno_seq.NEXTVAL, 'Ford', 'berry', 3);
select * from s_order;
select jno_seq.currval from dual;
-- 아래 pl/sql을 실행하면 sequence를 110까지 사용하게 된다.
begin
for i in 1..9 loop
insert into s_order values (jno_seq.nextval, 'Allen', 'Banana', 5);
end loop;
commit;
end;
/
select * from s_order;
-- sequence가 90부터 다시 시작된다
insert into s_order values (jno_seq.NEXTVAL, 'SMITH', 'Grape', 3);
-- 값이 감소하는 sequence 생성 및 사용하기
create sequence jno_seq_rev
increment by -2
minvalue 0
maxvalue 20
start with 10;
create table s_rev1 (no number);
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 10
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 8
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 6
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 4
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 2
insert into s_rev1 values (jno_seq_rev.nextval); -- sequenct 값 0
insert into s_rev1 values (jno_seq_rev.nextval); -- min value 값까지 내려와서 그 이하로는 오류 발생
-- sequence 조회 및 수정
select sequence_name, min_value, max_value, increment_by, cycle_flag, order_flag, cache_size, last_number
from user_sequences
where sequence_name='JNO_SEQ';
alter sequence jno_seq
maxvalue 120
cache 10;
-- sequence 삭제
drop sequence jno_seq;
-- synonym (시노님 - 동의어)
-- sysdba 권한으로 접속하여 scott에게 시노님 생성 권한을 줘야 scott가 시노님을 생성할 수 있다.
-- conn / as sysdba
-- grant create synonym to scott;
-- grant create public synonym to scott;
-- conn scott/tiger -- scott 계정으로 다시 접속하기
create synonym e for emp;
create public synonym d2 for dept;
-- synonym 조회하기
select synonym_name, table_owner, table_name
from user_synonyms
where table_name = 'EMP';
-- public synonym을 조회하려면, dba 권한으로 로그인해야 보임
-- conn / as sysdba
select synonym_name, table_owner, table_name
from dba_synonyms
where table_name = 'DEPT';
-- synonym 삭제
drop synonym e;
'IT > Oracle' 카테고리의 다른 글
oracle - 계정생성, 테이블 생성 및 컬럼 추가, jdbc연결, rownum, 게시판 답글 정렬 원리 (0) | 2018.11.15 |
---|---|
오라클 Constraint(제약조건) 종류, 사용, 관리 (0) | 2018.08.19 |
오라클 - DDL명령과 딕셔너리 (0) | 2018.08.17 |
오라클 단일행 함수 (0) | 2018.08.16 |
우분투에 오라클 설치 및 셋팅 (0) | 2018.08.09 |