Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

꺄르륵

[Oracle SQL Developer] 기초 XIX - SEQUENCE 객체 본문

프로그래밍/DB

[Oracle SQL Developer] 기초 XIX - SEQUENCE 객체

Teddy. 2019. 10. 29. 19:56

1.SEQUENCE


  1.1. 설명
    - 순서화된 정수를 반환하는 객체
    - 테이블과 독립적으로 수행된다
    - 자동으로 증가되는 값을 반환한다.
    - 테이블 설계시 적당한 PK가 없는 경우 대체키로 사용된다.
    - 시퀀스 값을 참조하기 위해 의사컬럼(Pseudo Column)을 사용한다.
      (1) 시퀀스명.NEXTVAL : 시퀀스 객체의 다음에 오는 값을 반환한다.
      (2) 시퀀스명.CURRVAL : 시퀀스 객체의 현재 값을 반환한다.
        *** 시퀀스 객체 생성 후 반드시 첫 번째 명령으로 '시퀀스.NEXTVAL' 이 한번은 수행되어야 한다.
  
  1.2. 사용형식
    
    CREATE SEQUENCE 객체명
    [START WITH n]
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE | NOCACHE]
    [ORDER | NOORDER]
    
    . START WITH n : n부터의 시작값 (DEFAULT 1(MINVALUE))
    . INCREMENT BY n : n부터의 증가값 (DEFAULT 1)
    . MAXVALUE n | NOMAXVALUE : 시퀀스의 최대값 설정 (DEFAULT NOMAXVALUE 10^27)
    . MINVALUE n | NOMINVALUE : 시퀀스의 최소값 설정 (DEFAULT NOMINVALUE 1)
    . CYCLE | NOCYCLE : 시퀀스의 최대/최소값에 도달 후 시퀀스의 사이클 여부 (DEFAULT NOCYCLE)
    . CACHE | NOCACHE : 시퀀스의 값을 미리 메모리에 생성하는 캐시 여부 (DEFAULT NOCACHE)
    . ORDER | NOORDER : 주어진 조건대로 생성을 담보한다(주문의 ORDER), (DEFAULT NOORDER)
    
    
  EX) 시작값이 13이고 1씩 증가되는 SEQUENCE  생성하기
  
  CREATE SEQUENCE SEQ_LPROD
   START WITH 12;
   INCREMENT BY 1
   
   
   SELECT SEQ_LPROD.NEXTVAL FROM DUAL;
   
   SELECT SEQ_LPROD.CURRVAL FROM DUAL;
   
   EX) LPROD 테이블에 다음 자료를 추가 삽입하시오. LPORD_ID는 시퀀스를 사용하시오.
   
   INSERT INTO LPROD VALUES (SEQ_LPROD.NEXTVAL, 'P504', '유아용품');
   
   INSERT INTO LPROD VALUES (SEQ_LPROD.NEXTVAL, 'P503', '장난감');
   
   SELECT * FROM LPROD;
   DROP SEQUENCE SEQ_LPROD;
   
   ** 시퀀스 객체의 사용이 제한되는 경우
     . SELECT, UPDATE, DELETE 문의 서브쿼리
     . VIEW 의 쿼리
     . DISTINCT 가 사용된 SELECT 절
     . GROUP BY, ORDER BY 절이 있는 SELECT 절
     . 집합연산자가 사용된 경우
     . SELECT 문의 WHERE 절
     . VIEW 생성시 CHECK OPTION