본문 바로가기
컴퓨터관련/Oracle

[Oracle]오라클에서 시퀀스 생성/확인/사용/삭제하는 방법

by 빛과 어둠사이 2024. 2. 21.
728x90
반응형
SMALL

오늘은 오라클에서 시퀀스를 생성/확인/사용/삭제하는 방법에 대해서

정리를 해보고자 합니다.

시퀀스는 키값 등 증가값으로 사용해야 할 때 많이 사용을 합니다.

저도 많이 사용을 합니다.

 

 

또한, 시퀀스를 쓰지 않고 MAX + 1을 해서 쓰는 경우도 있습니다.

이렇게 될 경우, commit을 하기 전에 다시 가지고 오게 된다면

값이 중복이 날 가능성이 있습니다.

그렇기 때문에 꾸준히 증가하는 값이라면 시퀀스를 사용하는것이 더욱 안전하고 좋습니다.

 

 

오늘은 oracle에서 Sequence를 생성/확인/사용/삭제 하는 방법에 대해서 정리를 해보도록 하겠습니다.

 

 

1. 시퀀스 생성하기

오라클에서 시퀀스를 생성하는 방법으로 저는 쿼리를 이용합니다.

툴이나 그런 것들에서도 제공이 되는 경우가 있지만

저는 쿼리를 이용하는 것이 제일 정확하고 안정적이라고 생각을 합니다.

시퀀스를 생성하는 쿼리는 다음과 같습니다.

CREATE SEQUENCE [시퀀스 명]
INCREMENT BY [증감숫자]  -- 시퀀스 증가값(기본값 1) 
START WITH [시작숫자]    -- 시퀀스 시작값
MAXVALUE [최대값] -- 시퀀스 최대값(생략시 최대값 무한대 NOMAXVALUE)
MINVALUE [최소값] -- 시퀀스 최소값(생략시 최소값 무한대 NOMINVALUE)
CYCLE OR NOCYCLE  -- 기본값은 NOCYCLE. CYCLE로 지정하면 최대값 도달 시 다시 최소값부터 시작
;

 

기본 문법은 위와 같습니다.

시퀀스명부터 해서 증감값 등 여러가지를 설정해주시면 되십니다.

 

저는 아래처럼 쿼리를 작성하였습니다.

CREATE SEQUENCE seq_test
INCREMENT BY 1 
START WITH 1  
MAXVALUE 9999
MINVALUE 1
CYCLE
;

 SEQ_TEST라는 시퀀스를 만들었습니다.

1씩 증가되면 최대값은 9999 최소값은 1로 설정을 하였습니다.

 

위와 같이 쿼리를 작성하였습니다.

위처럼 쿼리를 작성하고 실행을 하면 결과는 아래처럼 나옵니다.

 

그냥 쿼리가 성공적으로 실행이 되었다고만 나와지고 있습니다.

 

 

 

 

2. 시퀀스 확인

이번에는 Sequence가 정상적으로 생성이 되었는지

확인해보도록 하겠습니다.

시퀀스가 정상적으로 생성되었는지 확인하는 쿼리는 다음과 같습니다.

SELECT * FROM USER_SEQUENCES where sequence_name = 'SEQ_TEST'
;

 

위처럼 쿼리를 작성하였습니다.

SEQ_TEST는 제가 만든 테스트용 시퀀스이름입니다.

이 이름을 변경을 해주시면 원하는 시퀀스에 대한 정보를 확인할 수 있습니다.

또한, WHERE절을 지워버리면 현재 DB의 모든 시퀀스를 확인할 수 있습니다.

 

위처럼 쿼리를 작성하고 실행을 하게 되면

결과는 다음과 같이 나오게 됩니다.

 

 

위처럼 나와지는 것을 확인할 수 있습니다.

최대값 최소값 증가값 등 여러가지 정보를 확인할 수 있습니다.

 

 

 

3. 시퀀스 사용

이번에는 시퀀스 값을 사용하는 방법을

확인해보도록 하겠습니다.

시퀀스를 사용하는 쿼리는 다음과 같습니다.

 

select SEQ_TEST.NEXTVAL from dual
;

위처럼 쿼리를 작성해주시면 되십니다.

SEQ_TEST 를 다른 시퀀스 이름으로 변경을 해주시면

해당 시퀀스의 값이 증가가 되어 나와질 수 있습니다.

 

위처럼 쿼리를 작성하고 실행을 해보았습니다.

그랬더니 결과는 아래처럼 나와졌습니다.

 

시퀀스를 생성하고 처음 실행을 한 것이다보니 1로 나와지는 것을 확인할 수 있습니다.

위 쿼리를 다시 실행하게 되면 결과는 아래처럼 나오게 됩니다.

 

위처럼 시퀀스 값이 하나 더 증가가 된 것을 확인할 수 있습니다.

 

1번에서 맨 처음 만들 때 증가값을 1로 설정하였기 때문에

1씩 증가가 되는 것입니다.

1번에서 생성을 할 때 2나 3 등 다른 값으로 설정을 하였다면

해당 값 만큼 증가가 되었을 것입니다.

 

반응형

 

4. 시퀀스 변경

이번에는 Sequence를 변경해보도록 하겠습니다.

위 1번에서 생성을 하였던 시퀀스를 변경해보도록 하겠습니다.

시퀀스를 변경하는 방법도 생성과 동일합니다.

기존 시퀀스가 있으면 수정이 되고,

없으면 생성이 되는 것입니다.

 

ALTER SEQUENCE SEQ_TEST
INCREMENT BY 2  
MAXVALUE 8888
MINVALUE 1 
CYCLE
;

 

위 쿼리는 증가값을 2로 변경하고 최대값을 8888로 변경하는 것입니다.

위처럼 쿼리를 작성하고 실행을 하였습니다.

해당 쿼리에 대해서 결과는 캡쳐를 떠놓지는 않았네요.

그런데 어차피 성공되었다는 내용 외에는 없어서 그다지 중요하지 않을 것 같네요.

 

 

 

5. 시퀀스 확인

이번에는 다시 시퀀스를 확인해보도록 하겠습니다.

2번에서 했던 쿼리를 이용하여

다시 시퀀스를 확인해보도록 하겠습니다.

 

SELECT * FROM USER_SEQUENCES where sequence_name = 'SEQ_TEST'
;

 

위처럼 쿼리를 작성하였고,

실행을 하게 되면 결과는 아래처럼 나와지는 것을 확인할 수 있습니다.

 

위처럼 나와지는 것을 확인할 수 있습니다.

최대값이나 증가값이 변경이 된 것을 확인할 수 있습니다.

 

 

 

6. 시퀀스 삭제

이번에는 시퀀스를 삭제하는 방법을 정리해보도록 하겠습니다.

시퀀스를 삭제하는것은 ORACLE답게 DROP로 하면 됩니다.

시퀀스를 삭제하는 쿼리는 다음과 같습니다.

DROP SEQUENCE SEQ_TEST
;

위처럼 쿼리를 해주시면 되십니다.

그러면 SEQ_TEST라는 이름의 시퀀스가 삭제가 되는 것입니다.

 

위처럼 쿼리를 작성하고 실행을 하게 되면

결과는 아래처럼 나와지게 됩니다.

위처럼 나와집니다.

쿼리가 잘 실행이 되었다는 것으로 나와지네요.

 

 

SMALL

 

7. 다시 시퀀스 확인

이제 다시 시퀀스를 확인해보도록 하겠습니다.

2번의 쿼리를 이용하여 검색해서

삭제가 되었는지 확인해보도록 하겠습니다.

 

SELECT * FROM USER_SEQUENCES where sequence_name = 'SEQ_TEST'
;

 

위처럼 쿼리를 작성하였고

실행을 하게 되면 결과는 아래처럼 나와지게 됩니다.

 

 

위처럼 결과가 없는 것으로 나와집니다.

즉 DROP으로 삭제 처리가 잘 된 것까지 확인이 되었습니다.

 

 

 

 

 

 

오늘은 오라클에서 Sequence를 생성/확인/사용/삭제하는 방법에 대해서

정리를 해보았습니다.

위에서 얘기한 것처럼 시퀀스를 사용하면 증가하는 값을 사용해야 할 때

편하게 사용할 수 있습니다.

 

이상으로 ORACLE에서 시퀀스를 생성/확인/사용/삭제하는 방법이였습니다~

 

 

 

 

 

Do it! 오라클로 배우는 데이터베이스 입문:비전공자도 기초부터 확실하게!, 이지스퍼블리싱

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90
반응형
LIST