[오라클 SQL 강좌] 시퀀스 (Sequence) :: 소림사의 홍반장!

[오라클 SQL 강좌] 시퀀스 (Sequence)

2012. 8. 28. 17:31 - 삘쏘굿

시퀀스란?

  • 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.
  • 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.
  • 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.
  • 메모리에 Cache되었을 때 SEQUENCE 값의 액세스 효율이 증가 한다.
  • SEQUENCE는 테이블과는 독립적으로 저장되고 생성. 따라서 하나의 SEQUENCE를 여러 테이블에서 쓸 수 있다.

 

 

시퀀스 문법

  • - START WITH : 시퀀스의 시작 값을 지정한다. n을 1로 지정하면 1부터 순차적으로 시퀀스번호가 증가 한다.
  • - INCREMENT BY : 시퀀스의 증가 값을. n을 2로 하면 2씩 증가한다. START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,.. 이렇게 시퀀스 번호가 증가한다.

 

시퀀스 예제

-- 시퀀스 생성    
SQL> CREATE SEQUENCE emp_seq 
     START WITH 1 
     INCREMENT BY 1 
     MAXVALUE 100000 ; 

--  NEXTVAL을 사용하여  시퀀스 값을 자동으로 입력할 수 있다.
SQL> INSERT INTO emp(empno, ename, hiredate ) 
     VALUES(emp_seq.NEXTVAL, 'julia' , sysdate);  

-- NEXTVAL은 현재 시퀀스 값의 다음 값을 반환 한다.
SQL> SELECT emp_seq.NEXTVAL FROM DUAL ;

-- CURRVAL은 현재 시퀀스 값을 반환 한다. 
SQL> SELECT emp_seq.CURRVAL FROM DUAL ; 

 

 

시퀀스의 수정 및 삭제

START WITH는 수정 할 수 없다. START WITH 절이 없다는 점을 빼고는 CREATE SEQUENCE 문장과 같다.

 

시퀀스의 수정 및 삭제 예제

-- 2씩 증가하고, 최대값을 넘으면 다시 처음부터 순환하도록 수정
SQL> ALTER SEQUENCE emp_seq 
     INCREMENT BY 2 
     CYCLE; 

-- 시퀀스 삭제
 SQL>DROP SEQUENCE emp_seq;

 

참고>> http://oracleclub.com/lecture/1037

다른 카테고리의 글 목록

Dev. 데이터베이스/Oracle 관련 카테고리의 포스트를 톺아봅니다