주니어 기초 코딩공부/Database 기초

15장 시퀀스(Sequence)_완벽 정리_(생성, 조회, 수정, 삭제)오라클 데이터베이스 SQL

jju_developer 2022. 12. 20. 18:45
728x90

✔ 목차

  • 시퀀스(Sequence)란?
  • 시퀀스(Sequence) 생성 방법
  • 시퀀스(Sequence) 조회 방법
  • 시퀀스(Sequence) 수정 방법
  • 시퀀스(Sequence) 삭제 방법

 

✔ 시퀀스(Sequence)란?

시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 

보통 Primary Key (기본키= PK) 값에 중복 값을 방지하기 위해 사용합니다.

게시판에 글이 하나 추가될때마다 글 번호(PK)가 생겨야 하고,

이미 100번까지 글 번호가 생성되어있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101로 하나의 ROW를 생성해주어야 할 것입니다.

이때 101이라는 숫자를 얻으려면 기존 글 번호 중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야 하는데

시퀀스를 사용하면 이러한 로직이 필요 없이

데이터베이스에 ROW가 추가될 때마다 자동으로 +1을 시켜주어 매우 편리합니다.

 

※ 기본키는 PK라도 하며, 행을 식별하기 위해 사용하는 키 NOT NULL + UNIQUE (중복 X)입니다.

하지만 기본키는 문자보다는 숫자로 쓰는 것이 편리하기 때문에 자주 PK를 숫자로 식별하는데,

이거를 입력할 때마다 개발자가 숫자를 하나하나 다음 숫자를 기억해서 입력하는 것 이 아니라

시퀀스를 통해서 자동으로 순번을 증가 혹은 감소시키는 역할을 합니다.

즉, 시퀀스는 오로지 PK 값으로 편리하게 사용하기 위해 사용합니다!!!

시퀀스(Sequence) 생성 방법

--문법
CREATE SEQUENCE [시퀀스명]

INCREMENT BY [증감숫자] --증감숫자가 양수면 증가 음수면 감소 디폴트는 1

START WITH [시작숫자] -- 시작숫자의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE

NOMINVALUE OR MINVALUE [최솟값] 
-- NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -1028 
-- MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야합니다.

NOMAXVALUE OR MAXVALUE [최대값] 
-- NOMAXVALUE : 디폴트값 설정, 증가일때 1027, 감소일때 -1
-- MAXVALUE : 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE보다 커야합니다.

CYCLE OR NOCYCLE 
--CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지

CACHE OR NOCACHE 
--CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음

1. 기본 생성 _ 10부터 시작하여 10씩 증가 예시

2. EMP_SEQ 시퀀스 생성 1부터 시작하여 1씩 증가 예시

EMP_SEQ 생성

3. 만든 시퀀스 테이블과 NEXTVAL을 활용하여 데이터 자동 삽입

위의 SEQ를 사용하여  EMPNO가 중복 X, 자동 생성

 

 

no 시퀀스 활용 설명
2 SELECT STR.SEQ_TEST_1.NEXTVAL FROM DUAL; 하나씩 증가
3 SELECT
TO_CHAR(STR.SEQ_TEST_1.NEXTVAL,'FM000000000')
FROM DUAL;
증가 숫자 앞에 000000000추가
4 SELECT
  TO_CHAR(SYSDATE,'YYYYMMDD')||
   TO_CHAR(STR.SEQ_TEST_1.NEXTVAL,'FM000000000')
FROM DUAL
오늘날짜 +000000000
5 ALTER SEQUENCE STR.SEQ_TEST_1 RESTART START WITH 1 시퀀스 시작번호 변경
6 CONNECT BY LEVEL <=10 10전까지 자동으로 만듦

 

 시퀀스(Sequence) 조회 방법

SELECT TEST_SEQ.NEXTVAL FROM DUAL;

// 첫번째 조회시 1
// 두번째 조회시 3
// 세번째 조회시 5

// 2씩 증가

 

 

 시퀀스(Sequence) 수정 방법

ALTER를 활용하여 수정이 가능합니다.

--문법
ALTER SEQUENCE [시퀀스 명]
INCREMENT BY [증감숫자]  -- 수정할 증가값.
MAXVALUE [최대값] -- 수정할 최대값
MINVALUE [최소값] -- 수정할 최소값
CYCLE OR NOCYCLE  -- cycle 또는 nocycle

--예제
ALTER SEQUENCE TEST_SEQ
INCREMENT BY 5  -- 증가숫자 5
MAXVALUE 5000 -- 최대값 5000
MINVALUE 1 --  최소값 1
NOCYCLE  -- 순환안함

 

 시퀀스(Sequence) 삭제 방법

--문법
DROP SEQUENCE [시퀀스명];

--예제
DROP SEQUENCE TEST_SEQ;

 

 

그럼 지금까지 시퀀스의 기본 생성, 삭제, 수정 방법이었습니다,

 

질문사항은 댓글 부탁드립니다.

 

감사합니다.

 

 

 

 

728x90