일련번호 발생을 위한 시퀀스(SEQUENCE)
1. 시퀀스(SEQUENCE)란?
시퀀스는 테이블 내의 중복되지 않는 숫자를 자동으로 생성하는 자동 번호 발생기이다. 테이블 생성 후 시퀀스(일련번호)를 따로 만들어야 한다. 주로 NUMBER 자료형의 기본키 값으로 사용한다. NUMBER의 자리수가 몇자리냐에 따라 그만큼 숫자가 증가할 수 있다.
2. 시퀀스 생성
CREATE SEQUENCE 시퀀스이름 START WITH 시작숫자 INCREMENT BY 증가량;
예시1. 1부터 시작해서 1만큼씩 증가하는 book_seq 이름의 시퀀스를 생성한다면?
CREATE SEQUENCE book_seq START WITH 1 INCREMENT BY 1;
예시2. 10부터 시작해서 2만큼씩 증가하는even_seq 이름의 시퀀스를 생성한다면?
CREATE SEQUENCE even_seq START WITH 10 INCREMENT BY 2;
3. 시퀀스 사용
-- 1부터 시작해서 1만큼씩 증가하는 book_seq 이름의 시퀀스
CREATE SEQUENCE book_seq START WITH 1 INCREMENT BY 1;
위와 같은 시퀀스가 생성되어 있을 때, 시퀀스를 불러오기 위해서는 시퀀스이름.nextVal 형태를 이용한다.
-- booklist 테이블에 booknum과 title 필드 두개가 존재한다고 했을 때, 값을 입력
INSERT INTO booklist VALUES(book_seq.nextVal, '불친절한 SQL');
INSERT INTO 는 레코드(값)를 삽입하는 명령이다. 다음 글에서 다룰 예정이다.
4. 시퀀스 수정
-- 최대 증가값을 14까지로 제한
ALTER SEQUENCE book_seq maxvalue 14;
5. 시퀀스 삭제
-- 시퀀스 삭제
DROP SEQUENCE book_seq;
시퀀스는 값의 중복이 없어 데이터를 식별하기 위한 기본키로 사용된다. 만약 시퀀스를 삭제 후 재생성하고 싶다면, 이미 증가된 다음 값부터 시작하게 하여 기존 레코드와 중복되지 않도록 한다.
-- 1부터 1씩 증가하는 book_seq를 3까지 동작하고, 시퀀스를 삭제했다면?
CREATE SEQUENCE book_seq START WITH 4 INCREMENT BY 1;
'Backend > Database' 카테고리의 다른 글
[ORACLE] JOIN (ORACLE & ANSI) (0) | 2024.10.31 |
---|---|
[ORACLE] 오라클의 다양한 함수 (문자열, 날짜, 변환, 숫자, 그룹 함수) (0) | 2024.10.31 |
[ORACLE] 레코드 추가(INSERT), 수정(UPDATE), 삭제(DELETE), 조회(SELECT) 명령 (DML) (0) | 2024.10.29 |
[ORACLE] 테이블 수정 문법 ALTER TABLE (0) | 2024.10.28 |
[ORACLE] 테이블 생성(CREATE TABLE)과 제약 조건(CONSTRAINT) (0) | 2024.10.27 |