[SQL] 098. 절대로 중복되지 않는 번호 만들기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[기본 옵션]
-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
[예시]
사원 관리 테이블에서 새로운 사원이 입사한다면 사원번호는 중복되면 안된다.
그렇다면 다음 사원의 번호는 직접 중복되지 않은 번호를 찾아 입력하여야 한다.
시퀀스를 사용하면 이런 문제를 수 작업 없이 편하게 수행 가능하다.
다음 예시로 시퀀스 생성 과정을 살펴보자.
-
START WITH
로 시작 숫자를 1로 지정한다. -
INCREMENT BY
로 숫자의 증가치를 1로 지정한다. -
MAXVALUE
로 최대 숫자를 100으로 지정하였다. -
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 |
Leave a comment