티스토리 뷰

Non-Programming/Database

SQL - Sequence

글그리 2019. 5. 7. 12:31

데이터베이스를 구축하다보면 순차적으로 증가하는 값을 지정해야할 때가 있다. 게시판 서비스를 만들거나 유저목록 데이터베이스를 만들 때 index 값으로 정렬하면 관리하기가 편하다.

 

 

생성

sequence는 전역변수처럼 데이터베이스에 생성할 수 있다.

CREATE SEQUENCE number 
    START WITH 1,
    INCREMENT BY 1,
    MAXVALUE 1000,
    MINVALUE 1,
    NOCYCLE;

각 옵션은 설정하지 않으면 기본값 시작값(1), 증가값(1), 최소값(1), 최대값(가장 큰 숫자), NOCYCLE 으로 설정된다.
이렇게 생성된 number라는 sequence 변수를 데이터베이스 내에서 접근하여 사용할 수 있다.

 

 

사용

sequence는 주로 INSERT와 함께 사용된다. 테이블에 row를 추가하면서 sequence를 사용하는 방법을 보자.

  • NEXTVAL
    INSERT INTO USERS(index_number, ID, PW) 
      VALUES(number.NEXTVAL, 'eastroot', '1111');
    sequence 변수에 접근해서 최근에 가져온 값보다 한단계 더 큰 값을 가져오라는 뜻이다. 따라서 이전 쿼리에서 10을 가져왔다면 이번에는 11이 입력된다. 물론 INCREMENT BY값을 다른 값으로 설정했다면 그 차이만큼 증가한 값이 입력된다.
  • CURRVAL
    INSERT INTO USERS(index_number, id, pw)
      VALUES(number.CURRVAL, 'eastroot', '1111');
    sequence 변수에서 마지막으로 가져온 값을 다시 가져온다. 이 때 sequence를 증가시키지 않으며 특별한 경우를 제외하고 잘 사용되지 않는다. 그도 그럴것이 사용할 이유가 딱히 없다.

 

 

수정

START WITH 값을 제외한 설정들을 수정할 수 있다. START WITH 값을 바꾸고싶다면 seqence를 지웠다가 다시 생성해야한다.

ALTER SEQUENCE number INCREMENT BY 2, MAXVALUE 10000;

 

 

삭제

DROP SEQUENCE number;

사용이 끝난 sequence는 삭제할 수 있다.

'Non-Programming > Database' 카테고리의 다른 글

SQL - subquery  (0) 2019.05.20
데이터베이스 정규화  (0) 2019.05.20
SQL - Tutorial  (0) 2019.04.07
데이터베이스 - 연산(Operation)  (0) 2019.03.25
데이터베이스 - 키(Key)  (0) 2017.03.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함