[SQL] 098. 절대로 중복되지 않는 번호 만들기

Updated:

초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.

오라클 SQL을 기반으로 합니다.

실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.


[기본 옵션]

-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;

-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';

[예시]

사원 관리 테이블에서 새로운 사원이 입사한다면 사원번호는 중복되면 안된다.

그렇다면 다음 사원의 번호는 직접 중복되지 않은 번호를 찾아 입력하여야 한다.

시퀀스를 사용하면 이런 문제를 수 작업 없이 편하게 수행 가능하다.

다음 예시로 시퀀스 생성 과정을 살펴보자.

  1. START WITH로 시작 숫자를 1로 지정한다.

  2. INCREMENT BY로 숫자의 증가치를 1로 지정한다.

  3. MAXVALUE로 최대 숫자를 100으로 지정하였다.

  4. NOCYCLE로 최대 숫자까지 출력 후 다시 처음부터 번호를 생성하지 않게 설정하였다.

-- 1부터 100까지 1씩 증가하는 시퀀스 SEQ1 생성
CREATE SEQUENCE SEQ1
START WITH 1
INCREMENT BY 1
MAXVALUE 100
NOCYCLE;

EMPNO, ENAME, SAL 컬럼을 가지는 EMP02 테이블을 생성한다.

-- EMP02 테이블 생성
CREATE TABLE EMP02
(EMPNO NUMBER(10),
 ENAME VARCHAR2(10),
 SAL NUMBER(10));

EMPNO는 SEQ1.NEXTVAL을 이용해 입력한다(시퀀스명.NEXTVAL).

-- SEQUENCE.NEXTVAL을 이용해서 수 작업 없이 진행 가능
INSERT INTO EMP02
VALUES(SEQ1.NEXTVAL, 'JACK', 3500);

INSERT INTO EMP02
VALUES(SEQ1.NEXTVAL, 'JAMES', 4000);

SELECT *
FROM EMP02;

[결과]

시퀀스 규칙에 따라 자동으로 번호가 부여되었다.

EMPNO ENAME SAL
1 JACK 3500
2 JAMES 4000

Tags:

Categories:

Updated:

Leave a comment