✔ 목차
- 시퀀스(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씩 증가 예시
3. 만든 시퀀스 테이블과 NEXTVAL을 활용하여 데이터 자동 삽입
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;
그럼 지금까지 시퀀스의 기본 생성, 삭제, 수정 방법이었습니다,
질문사항은 댓글 부탁드립니다.
감사합니다.
'주니어 기초 코딩공부 > Database 기초' 카테고리의 다른 글
17장 사용자 관리_데이터베이스 보안을 위한 권한 생성, GRANT,비밀번호 변경(SQL 오라클) (0) | 2022.12.20 |
---|---|
17장 스키마 개념 상세 설명_SQL(오라클) (0) | 2022.12.20 |
14장 가상테이블 뷰_쿼리, 가상테이블, Top-n 구하기(오라클) (1) | 2022.12.19 |
13장 데이터 무결성_제약조건 이름 설정하기 및 개념 설명 (SQL_오라클) (0) | 2022.12.19 |
13장 데이터 무결성_NOT NULL, UNIQUE, PK, FK 정의 및 상세 설명 (SQL_오라클) (0) | 2022.12.19 |