내 블로그 목록

2018년 7월 11일 수요일

[SQL] 월간 뷰어 인터뷰_시퀀스

시퀀스(SEQUENCE)

Q. 시퀀스란?
INDEX와 비슷한 개념. 중복된 값을 배제하기 위한 기본키. 자동으로 번호를 생성하여 붙여준다. PK로 사용하면 좋을 듯.



Q. 시퀀스의 기본 형식은 무엇인가?


CREATE SEQUENCE sequence_name
[START WITH n] ①*
[INCREMENT BY n] ②*  
[{MAXVALUE n | NOMAXVALUE}] ③*
[{MINVALUE n | NOMINVALUE}] ④*
[{CYCLE | NOCYCLE}] ⑤*
[{CACHE n | NOCACHE}] ⑥*


*START WITH:  시퀀스 번호의 시작값을 지정. START WITH 1.
*INCREMENT BY: 증가 값 지정. default 값은 1.
       예를 들어, 1씩 증가하는 시퀀스 = INCREMENT BY 1.
* MAXVALUE n | NOMAXVALUE: 시퀀스가 가질 수 있는 최대값을 지정.
* MINVALUE n | NOMINVALUE: 시퀀스가 가질수 있는 최소값 지정.
* CYCLE | NOCYCLE: 지정된 시퀀스 값이 최대값까지 증가가 완료되게 되면 다시
                                   START
* CACHE n | NOCACHE: 메모리상의 시퀀스 값을 관리하도록 하는 것. 기본값은 20.


그러나, 언뜻 보기에 굉장히 복잡하고도 다루기 싫게 생기지 않았는가.
다음과 같이 줄일 수 있다.


CREATE SEQUENCE DEPT_DEPTNO_SEQ
INCREMENT BY 10
START WITH 10;




Q. 정신없는 하루를 보내고 컴퓨터 앞으로 돌아오면, 가끔은 내가 시퀀스의 몇 번까지 사용했나 기억이 나지 않는 순간이 있다.
인터뷰이는 그 순간 어떻게 해결하나?


CURRVAL : 현재 값을 반환
NEXTVAL : 현재 시퀀스값의 다음 값을 반환.


이 두 문법을 사용한다. 시퀀스 번호 검색은 다음과 같다.


SELECT dept_deptno_seq.CURRVAL FROM dual;
SELECT dept_deptno_seq.NEXTVAL FROM dual;




Q. 아무래도 시퀀스는 데이터 삽입과 함께 사용하는 경우가 많다. 그렇다면, 시퀀스와 함께 데이터를 삽입하는 방법은 무엇인가?


INSERT INTO DEPT01 VALUES(DEPT_DEPTNO_SEQ.NEXTVAL, ‘A’, ‘A’);


삽입이 되었는가 여부는 SELECT로 검색해 볼 수 있다.


SELECT * FROM DEPT01;




Q. 시퀀스 제거는 어떻게 하나?


DROP SEQUENCE DEPT_DEPTNO_SEQ;

늘 그렇듯, 삭제는 간단하다.

댓글 없음:

댓글 쓰기