티스토리 뷰

DATABASE/SQL

[SQL] SEQUENCE

진심스테이크 2018. 4. 20. 16:41

 

 

Sequence : 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기

- 시퀀스를 기본키로 사용하게 되면 사용자의 부담을 줄일 수 있음

#기본키는 중복된 값을 가지면 안됨 -> 항상 유일한 값을 가져야함

 

기본 형태

CREATE SEQUENCE 시퀀스명
추가적 형식;

 

 

추가적 형식

1. START WITH : 시퀀스 번호의 시작값을 지정 할 때 사용

2. INCREMENT BY : 연속적인 시퀀스 번호의 증가치를 지정

3. MAXVALUE / NOMAXVALUE

- MAXVALUE : 시퀀스가 가질 수 있는 최대값 지정

- NOMAXVALUE

  - ASCENDING :  1027

  - DESCENDING : -1

4. MINVALUE / NOMINVALUCE

- MINVALUE : 시퀀스가 가질 수 있는 최소값 지정

- NOMINVALUCE

  - ASCENDING :  1

  - DESCENDING : 1026

5. CYCLE / NOCYCLE

- CYCLE : 지정된 시퀀스 값이 최대값까지 증가가 완료되면 다시 START WITH 옵션에 지정한 시작 값에서 다시 시퀀스를 시작하도록 함

- NOCYCLE : 증가가 완료되게 되면 에러 유발

6. CACHE / NOCACHE

- CACHE : 메모리상의 시퀀스 값을 관리 -> 기본값 : 20

- NOCACHE : 원칙적으로 메모리 상에서 시퀀스를 관리하지 않음

 

 

데이터 딕셔너리 이름 규칙성

1. USER_TABLE : 테이블 객체에 대한 정보를 저장하는 데이터 딕셔너리

2. USER_VIEWS : 뷰 객체에 대한 정보를 저장하는 데이터 딕셔너리

3. USER_SEQUENCE : 시퀀스에 대한 자료 사전

 


 

 

CURRVAL (Current Value) : 현재 값 반환

NEXTVAL (Next Value) : 현재 시퀀스값의 다음 값을 반환

 

1. 사용할 수 있는 경우

- 서브 쿼리가 아닌 SELECT문

- INSERT문의 SELECT절

- INSERT 문의 VALUE절

- UPDATE문의 SET절

 

2. 사용할 수 없는 경우

- VIEW의 SELECT절

- DISTINCT 키워드가 있는 SELECT문

- GROUP BY, HAVING, ORDER BY절이 있는 SELECT문

- SELECT, DELETE, UPDATE의 서브 쿼리

- CREATE TABLE, ALTER TABLE 명령의 DEFAULT값

 

 


 

 

시퀀스를 테이블의 기본 키에 접목

 

SEQUENCE EMP_SEQ 생성

 

시작값이 1이고 최댓값이 100000,

1씩 증가하는 시퀀스 생성

 

 

생성된 시퀀스를 사용하기 위해 사원 번호를 기본키로 설정하는 테이블 EMP01 생성

 

 

사원 번호를 저장하는 EMPNO 칼럼은 기본으로 설정했으므로, 중복된 값을 가질 수 없다

 

시퀀스 EMP_SEQ로부터 사원번호를 자동으로 할당받아 데이터 추가

 

 

시퀀스 수정

- 기본 형태

ALTER SEQUENCE 시퀀스명;

 

10부터 10씩 증가하면서 최대 30까지 값을 갖음

 

 

 

 

부서 번호를 계속 생성하다 보면 최대값을 넘기게 된다

그러면 오류가 뜸!

 

 

 

시퀀스 제거

 

 

 

 


 

 

뷰 정의

 

- 뷰 정의 및 확인

 

 

 

 

 

'DATABASE > SQL' 카테고리의 다른 글

[SQL] PROCEDURE  (0) 2018.04.23
[SQL] PL/SQL  (0) 2018.04.20
[SQL] SYNONYM - 동의어  (0) 2018.04.20
[SQL] INDEX  (0) 2018.04.20
[SQL] SUBQUERY  (0) 2018.04.20
댓글