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 |
조회하고 싶을때는
select sequence.currval from dual; |
CURRVAL은 마지막으로 리턴했던 일련번호를 리턴한다.
이게 뭔말이냐면.. 그냥 현재의 일련번호를 확인한다고 보면 된다.
NEXTVAL은 다음 번호를 생성하는 함수인데, 어떻게 작동하느냐하면
① 일련번호를 리턴한다.
② 일련번호를 증가(감소)치만큼 증가(감소)시킨다.
이런 식이다.
얘네 둘은
① INSERT,UPDATE문에서 사용한다.
② 서브쿼리,GROUP BY, HAVING, ORDER BY, DISTINCT와 함께 사용할 수 없다.
③ 컬럼의 기본값으로 사용할 수 없다.
'SQL 언어 > 시퀀스(SEQUENCE)' 카테고리의 다른 글
SEQUENCE-② 변경, 삭제 (0) | 2012.03.12 |
---|