Cracking Code

SQL - SEQUENCE (시퀀스) 본문

Database

SQL - SEQUENCE (시퀀스)

CrackCo 2020. 7. 22. 20:32
테이블에 데이터를 삽입할 때 기본키는 보통 숫자로 합니다.
숫자의 증감을 알아서 계산해주어 편리한 데이터 삽입이 가능하게 하는 시퀀스에 대해 알아봅시다.
CREATE SEQUENCE sequence
    [INCREMENT BY n]
    [START WITH n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE n | NOCACHE];

시퀀스는 자동으로 숫자의 증감을 수행합니다.

INCREMENT BY 절로 n 만큼 증감을 정하고 START WITH 절은 시작할 숫자 n을 정합니다.

MAXVALUE 절은 n이 증가될 수 있는 최대의 숫자를 정하며 MINVALUE 절로 n까지 감소할 수 있는 숫자를 정합니다.

CYCLE 절을 이용하여 최대 또는 최소에 도달하였을 때 최소 또는 최대부터 다시 증감을 시작할 것인가 결정합니다.

 

숫자 1부터 1만큼 최대 9999 까지만 증가하고 도달하면 끝나는 시퀀스를 만들어 봅시다.

CREATE SEQUENCE EMP_SEQ
    INCREMENT BY 1
    START WITH 100
    MAXVALUE 9999
    NOCYCLE;

 

시퀀스가 생성되었습니다.

 

이제 시퀀스를 사용해봅시다.

시퀀스 사용은 NEXTVAL과 CURRVAL로 사용할 수 있습니다.

sequence.NEXTVAL;

sequence.CURRVAL;

NEXTVAL은 지정된 시퀀스에서 순차적인 시퀀스 번호를 추출하며

CURRVAL은 방금 추출한 시퀀스 번호를 참조할 때 사용합니다.

🚨단, NEXTVAL을 수행한 후 번호를 추출할 때 사용해야 합니다.

 

시퀀스가 잘 동작하는지 확인해보겠습니다.

SELECT EMP_SEQ.NEXTVAL, EMP_SEQ.CURRVAL
FROM DUAL;

100부터 시작하여 1씩 증가하는 모습을 볼 수 있습니다.

 

이제 시퀀스를 변경하는 방법을 알아보겠습니다.

ALTER SEQUENCE sequence
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE n | NOCACHE];

시퀀스를 만들 때와 같지만 CREATE만 ALTER로 바꾸면 됩니다.

 

EMP_SEQ 시퀀스의 MAXVALUE 옵션은 8000으로 바꿔봅시다.

ALTER SEQUENCE EMP_SEQ
    MAXVALUE 8000;

EMP_SEQ의 MAX_VALUE 가 8000으로 변경된 것을 확인할 수 있습니다.

 

시퀀스의 삭제는 테이블 또는 뷰를 삭제할 때와 같습니다.

DROP SEQUENCE sequence_name;

'Database' 카테고리의 다른 글

SQL - CREATE, ALTER, DROP USER  (0) 2020.07.23
SQL - INDEX  (0) 2020.07.23
SQL - VIEW (뷰)  (0) 2020.07.22
SQL - ALTER TABLE  (0) 2020.07.22
SQL - DROP TABLE  (0) 2020.07.21
Comments