SEQUENCE는 아주 중요하다!(적어도 내가 보기엔..-_-;)
왜냐하면!! 게시판에 글 번호를 매길때 바로 이 시퀀스를 사용하기 때문이다!

그렇다면 SEQUENCE란 무엇인가?
간단하게, 증가(감소)하는 일련번호를 생성하는 객체라고 보면 된다.
여러 테이블에서 공유가 가능하다고 한다(이 기능(?)은 아직 안 써봐서 모르겠지만.. 1씩 증가하는 시퀀스 하나만 만들어놓으면 여러 게시물 테이블이 이 시퀀스 하나를 공유해서 쓰면 된다는 말이겠지?).

일단 만들어야 쓰든가 말든가 하겠지?

1.SEQUENCE 생성

create sequence sequence
increment by 1
start with 1
maxvalue 100; 

create Sequence sequence //Sequence를 만드는데 이름은 sequence로 한다. 대소문자 구별 없다. 그냥 식별하려고 쓴거임.
increment by 1 //1씩 증가한다는 얘기다. -1이면 1씩 감소하겠지?
start with 1 //sequence의 시작 번호다. 기본값은 1이다.
maxvalue 100; //생성 가능한 시퀀스의 최대값이다.

이 외에도 nomaxvalue,numinvalue,cycle,chche등도 있는데 일단 패스하자. 아직 나도 잘 모르니까 -_-;

2.SEQUENCE 조회

어떤 시퀀스가 있는지 조회하고 싶을때 쓰는 명령문이다. 물론 이크립스의 SQL Explorer에 오른쪽 트리 보면 나오긴 한다.
select min_value, max_value, increment_by, last_number
from user_sequences
where sequence_name='sequence';
아까 만든 시퀀스가 조회될 거다. 마찬가지로 조건 안 쓰면 모든 시퀀스가 검색되니 조심하고. 별로 어렵지 않다.

3.CURRVAL 과 NEXTVAL 함수

얘네들도 아주 중요한 뽀인트 중에 하나다.

 sequence.currval
 sequence.nextval
사용법은 이렇다. 시퀀스이름.currval(혹은 nextval)이라고 입력하면 된다.

조회하고 싶을때는
 select sequence.currval
 from dual;
이렇게 쓰는데 dual은 가상의 테이블(?)이다. 일단 이렇게 알아두자;; 잘 모르겠다;;

CURRVAL은 마지막으로 리턴했던 일련번호를 리턴한다.
이게 뭔말이냐면.. 그냥 현재의 일련번호를 확인한다고 보면 된다.

NEXTVAL은 다음 번호를 생성하는 함수인데, 어떻게 작동하느냐하면
 ① 일련번호를 리턴한다.
 ② 일련번호를 증가(감소)치만큼 증가(감소)시킨다.
이런 식이다.

얘네 둘은 
 ① INSERT,UPDATE문에서 사용한다. 
 ② 서브쿼리,GROUP BY, HAVING, ORDER BY, DISTINCT와 함께 사용할 수 없다.
 ③ 컬럼의 기본값으로 사용할 수 없다.

'SQL 언어 > 시퀀스(SEQUENCE)' 카테고리의 다른 글

SEQUENCE-② 변경, 삭제  (0) 2012.03.12
Posted by Engineer135
,