연속적인 숫자 값을 자동으로 증감 시켜서 값을
리턴하는 객체
테이블을 생성할 때 숫자에 primary key를 부여할 때가 많은데, (글번호, 상품번호, 등록번호 ...) 이 숫자 값들에 자동으로 번호를 부여할 수 있는 객체
SQL>CREATE SEQUENCE 시퀀스명
INCREMENT BY 한번에 증감할 양(DEFAULT : +1)
START WITH 시작값 (DEFAULT: 0 )
cache 여부
NEXTVAL : Next Value, 다음 값을 얻어옴
SQL> CREATE SEQUENCE test_seq;
시퀀스가 생성되었습니다.
SQL>SELECT test_seq.NEXTVAL FROM DUAL;
--> 이 함수가 숫자 하나를 반환 (실행할 때마다 증가된 값 반환)
CURRVAL : Current Value, 현재 값을 얻어옴
SQL>SELECT test_seq.CURRVAL FROM DUAL;
SQL> SELECT sequence_name, last_number FROM user_sequences;
여기서 숫자를 21까지 반환하지 않았는데 21인 이유
-DB입장에서는 숫자를 알아서 계산하고 반환하는 작업이 무겁기 때문에 시퀀스를 미리 20개 정도 반환해서 가지고 있다가 하나씩 가져다 줌 !
ex) 멤버테이블에서 사용할 시퀀스 만들기
SQL> CREATE SEQUENCE MEMBER_SEQ;
시퀀스가 생성되었습니다.
테이블에 숫자값 넣을 때 숫자 대신 시퀀스 NEXTVAL로 넣기
SQL> INSERT INTO member
2 (num, name, addr)
3 VALUES( member_seq.NEXTVAL, '김구라', '노량진');
똑같이 계속 추가하면
SQL> select * from member;
이렇게 자동으로 숫자가 뜸 !
SQL> CREATE SEQUENCE TEST_SEQ
2 START WITH 10 --> 시작값 지정
3 INCREMENT BY 10; --> 증가값 지정