메뉴 건너뛰기

조회 수 8152 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Oracle 시퀀스 생성, 추가, 삭제
시퀀스란 ?
◈ 지정된 수치로 증가하거나 감소시키는 일종의 번호표, 최대 15개까지 생성가능하며
   시작값은 수정할수 없고 새로 생성해야한다.
◈ 유일(UNIQUE)한 값을 생성해주는 오라클 객체입니다.
◈ 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있습니다.
◈ 보통 primary key 값을 생성하기 위해 사용합니다.
◈ 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가 합니다.
◈ Sequence는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 sequence를
   여러 테이블에서 쓸 수 있습니다.

- 시퀀스 생성 문법
CREATE SEQUENCE sequence_name
       [INCREMENT BY n1]
       [START WITH n2]
       [MAXVALUE n3 or NOMAXVALUE]
       [MINVALUE n4 or NOMINVALUE]
       [CYCLE or NOCYCLE]
       [CACHE or NOCACHE];

sequence_name : 생성하고자 하는 시퀀스 명
INCREMENT BY n1 : 해당 시퀀스의 증가값을 지정한다. 생략하면 1로 지정됨.
오름차순 : 양의 정수, 내림차순 : 음의정수 사용
START WITH n2 : 해당 시쿼스가 처음 시작하는 값을 지정한다. 생략하면 1로 지정됨.
MAXVALUE n3 : 해당 시퀀스가 생성할 수 있는 최대값,
NOMAXVALUE : 오름차순 최대 10의 27승 까지, 내림차순 -1 까지 생성됨.
MINVALUE n4 : 해당 시퀀스가 생성할 수 있는 최소값
NOMINVALUE : 오름차순 1 까지, 내림차순 -10의 26승 까지
CYCLE : 해당 시퀀스가 최대값에 도달한 후 다시 처음부터 시퀀스를 생성한다.
NOCYCLE : 해당 시퀀스가 최대값에 도달해도 다시 생성하지 않는다.[DEFAULT]
CACHE : 시퀀스 값을 메모리에 할당하여 처리한다. [ORACLE DEFAULT 20]
NOCACHE : 시퀀스를 메모리에 할당하여 사용하지 않음.

예1) CREATE SEQUENCE temp_seq
           INCREMENT BY 2
           START WITH   1
           MAXVALUE 100
           NOCYCLE
           NOCACHE;

temp_seq하는 시퀀스를 생성한다.
초기값은 1부터 시작하며 2씩 증가하고 100이 되거나 100에 가장 근접한 값을 가지게 되면
종료된다.(NOCYCLE 지정에 의해)
NOCHCHE지정으로 메모리에 CACHE하지는 않는다.

결과) 1 3 5 7 9 ..... 99

예2) CREATE SEQUENCE temp_seq
           INCREMENT BY -1
           START WITH   100
           MAXVALUE 100

           MINVALUE 0
           NOCYCLE
           NOCACHE;

temp_seq하는 시퀀스를 생성한다.
초기값은 100부터 시작하며 1씩 감소하고 0이 되면 종료된다.
NOCHCHE지정으로 메모리에 CACHE하지는 않는다.

결과) 100, 99, 98, 97, 96 ... 0

- 시퀀스 수정
ALTER SEQUENCE 수정할 시퀀스 이름
    [INCREMENT BY n1]
    [MAXVALUE n3 or NOMAXVALUE]
    [MINVALUE n4 or NOMINVALUE]
    [CYCLE or NOCYCLE]
    [CACHE or NOCACHE];

자신의 sequence 이거나 sequence 에 대한 ALTER 권한을 가져야만 sequence 를 수정할수 있다.
아직 생성하지 않은 sequence 값만이 ALTER SEQUENCE 명령에 영향을 받는다.
그리고 유효성 검사를 하게 되는데 예를 들어 새로운 MAXVALUE 는 현재의 sequence 값보다
작지 않아야 한다.
생성할 때 썻던 START WITH 옵션은 ALTER SEQUENCE 를 써서 변경할수 없다. 다른 번호에서
다시 시작할려면 이전 sequence 를 삭제하고 다시 생성해야한다.

- 시퀀스 삭제
DROP SEQUENCE 삭제할시퀀스이름 :

TOAD 에서 실습을 해보도록 한다.
TOAD 버전은 9.7 이다.
Database > Create > Sequence 메뉴로 들어간다.

다른 방법은 Schema Browser 아이콘을 클릭해서 아래그림과 같이 두번째 리스트 항목중 sequence 를
선택하게 되면 현재 생성된 것들과 새로 생성할수 있는 메뉴들을 제공한다.
 

아래 새로 생성 아이콘을 클릭하게 되면 sequence 생성을 위한 창이 나온다.
 

아래와 같이 생성된 목록을 볼수 있다

증가값이나 MAX 값을 수정하고 싶을때는 오른쪽 마우스를 클릭하여 Alter sequence 를 선택한후
수정값을 입력하고 execute 를 누르면 된다.

List of Articles
번호 제목 날짜 조회 수
61 [Oracle 12] ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다. file 2016.12.08 8580
60 [Oracle SQL] 여러 행(ROW)을 하나의 컬럼(COLUMN)으로 합치기 (WM_CONCAT) file 2016.12.08 20018
59 [Oracle] DB Export, Import 방법 2016.12.08 12607
58 [Oracle] Rownum을 이용한 페이징 처리 2016.12.08 10385
57 [Oracle] 테이블 스페이스 및 사용자 계정 생성 방법 2016.12.08 8581
56 [Oracle|오라클] 한글 초성 검색 함수 2016.12.08 9089
55 간단한 쿼리로 일련번호 쉽게 넣기 - ROWNUM 사용 file 2016.08.29 9472
54 계층형 쿼리의 응용 - 달력만들기 file 2016.12.08 8528
53 계층형 쿼리의 응용 - 답변형 계시판 file 2016.12.08 8752
52 관리자( SYSTEM, SYS) 계정 비밀번호를 잊어버렸을때.. file 2016.12.08 8341
51 구분자로 자르기 (Split) file 2016.12.08 20566
50 기간내 모든 날자(일자) 구하기 2016.12.08 7381
49 날짜관련 계산하기(1) file 2016.12.08 8090
48 다른 버전의 오라클 import, export 하기 file 2016.09.12 9475
47 단일행을 다중 row로 분리, 다중 row 결과를 단일행으로 연결하는 방법 2016.08.29 9403
46 데이터베이스 백업하기 ( import : 가져오기 , export : 내보내기 ) file 2016.12.08 9887
45 데이터의 암호화 및 복호화 file 2016.12.08 13245
44 동적쿼리(Dynamic SQL) 사용법 (텍스트 쿼리) file 2016.12.08 15045
43 숫자 체크 방법 (IS_NUMBER, IS_NUMERIC) file 2016.12.08 23127
42 숫자를 문자로 변환 시 소수점 처리 (TO_CHAR, FM) file 2016.12.08 15027
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved