티스토리 뷰

Database

<Database> SQL Sequence

춘햄 2021. 4. 12. 17:27

1. Sequence? 

시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체, 보통 PK값에 중복값을 방지하기위해 사용한다.

 

2. Sequence의 기본 형식:

CREATE SEQUENCE sequence_name
		[START WITH n] /* 시퀀스의 시작 번호 */
        [INCREMENT BY n] /*증감치 */
        [{MAXVALUE n | NOMAXVALUE}]  
        [{MINVALUE n | NOMINVALUE}]
        [{CYCLE | NOCYCLE}]
        [{CACHE n | NOCACHE}] /* 메모리상의 시퀀스 값을 관리하도록 하는 것, 기본 값은 20 */
                              /* NOCACHE 는 원칙적으로 메모리 상에서 시퀀스를 관리하지 않음 */
        

 

3. Sequence  객체 확인: 

SELECT SEQUENCE_NAME, 
	MIN_VALUE, 
    MAX_VALUE, 
    INCREMENT_BY, 
    CYCLE_FLAG 
FROM USER_SEQUENCES;

4. Sequence를 사용할 수 있는 경우:

 1) 서브쿼리가 아닌 SELECT 문

 2) INSERT 문의 SELECT 절

 3) INSERT 문의 VALUE 절

 4) UPDATE의 SET 절

 

5. Sequence를 사용할 수 없는 경우: 

1) VIEW의 SELECT 절

2) DISTINCT 키워드가 있는 SELECT문

3) GROUP BY, HAVING, ORDER BY 절이 있는 SELECT 문

4) SELECT, DELETE, UPDATE의 서브 쿼리

5) CREATE TABLE, ALTER TABLE 명령의 DEFAULT 값

 

6. Sequence 활용:

-CURRVAL: 현재 시퀀스 값 반환

-NEXTVAL: 다음 시퀀스 값 삽입

 

 1) 시퀀스 생성:

 CREATE SEQUENCE EMP_SEQ
 	START WITH 1
 	INCREMENT BY 1
 	MAXVALUE 100000;

 2) 테이블 생성:

CREATE TABLE EMP01(
	EMPNO NUMBER(4) PRIMARY KEY,
	ENAME VARCHAR(10),
	HIREATE DATE
);

 3) 시퀀스.NEXTVAL 삽입:

INSERT INTO EMP01
VALUES(EMP_SEQ.NEXTVAL, 'JULIA', SYSDATE);

INSERT INTO EMP01
VALUES(EMP_SEQ.NEXTVAL, 'CHOON', SYSDATE);

INSERT INTO EMP01
VALUES(EMP_SEQ.NEXTVAL, 'HAM', SYSDATE);

INSERT INTO EMP01
VALUES(EMP_SEQ.NEXTVAL, 'MOONG', SYSDATE);

다음과 같은 순서로 삽입한 뒤에 확인해보면, 

 

위와 같이 순서대로 번호가 매겨지는 것을 확인할 수 있다.

 

 

끝!

 

'Database' 카테고리의 다른 글

[Error] JDBC 'LIKE' 사용 시 주의 사항  (0) 2021.04.27
<Database> 활용 가능한 Oracle 함수  (0) 2021.04.13
<Database> SQL 집합 연산자  (0) 2021.04.12
<Database> JDBC 활용_3 (문제 풀이)  (0) 2021.04.07
<Database> DML - SELECT  (0) 2021.04.06
Comments