728x90
반응형

ORACLE Sequence란?

ORACLE Sequence는 데이터베이스 객체로, 순번을 생성하고 제어하는 데 사용된다.

순번은 일련의 숫자 값을 생성하는 객체로, 주로 테이블의 기본 키 값을 생성하는 데에 활용된다.

Sequence를 사용하면 여러 사용자가 동시에 접근해도 고유한 값이 보장된다는 장점이 있다.

 

 

Sequence 생성하기

ORACLE에서 Sequence를 생성하는 방법은 간단하다.
다음과 같이 CREATE SEQUENCE 문을 사용하여 생성할 수 있다.

-- ############################
-- SEQUENCE 생성하기 
-- []에 있는 값은 임의로 변경해 주시면 됩니다.
-- {}에 있는 값은 선택하여 사용해 주시기 바랍니다.
-- ############################

CREATE SEQUENCE [sequence_name]
START WITH [start_value]
INCREMENT BY [increment_value]
MAXVALUE [max_value]
MINVALUE [min_value]
{CYCLE/NOCYCLE};

 

  • sequence_name: Sequence 이름 지정
  • start_value: Sequence가 시작할 값 지정
  • increment_value: Sequence 값이 증가하는 양 지정
  • max_value: 최댓값 지정
  • min_value: 최솟값 지정
  • CYCLE/NOCYCLE: 최댓값에 도달 시 순환 여부 결정

 

 

Sequence 사용하기

SELECT sequence_name.NEXTVAL FROM dual;

 

위와 같이 사용하면 Sequence에 다음 값을 가져오는 데 사용된다.

(dual은 ORACLE에서 단일 행의 가상 테이블)

 

 

예제 1 (생성 및 Sequence 활용하여 값 넣기)

-- ############################
-- custimer_id_seq라는 SEQUENCE 생성하기 
-- 시작할 값은 1, 증가값은 1씩 증가하며 최대값은 9999
-- ############################

CREATE SEQUENCE customer_id_seq
START WITH 1000
INCREMENT BY 1
MAXVALUE 9999
NOCYCLE;

-- ############################
-- 시퀀스 테스트를 위하여 customers 테이블 생성
-- ############################

CREATE TABLE customers (
    customer_id NUMBER PRIMARY KEY,
    name VARCHAR2(100)
);

-- customer_id = 1, name = 'John Doe'
INSERT INTO customers (customer_id, name)
VALUES (customer_id_seq.NEXTVAL, 'John Doe');

-- customer_id = 2, name = 'Jane Smith'
INSERT INTO customers (customer_id, name)
VALUES (customer_id_seq.NEXTVAL, 'Jane Smith');

 

 

예제 2 (현재 사용 중인 Sequence 값 변경하기)

--현재값 확인하기[현재값 = 2]
SELECT customer_id_seq.NEXTVAL FROM DUAL;

--시퀀스의 증가값을 10으로 변경. 다음 시퀀스 호출될 때마다 10씩 값 증가
ALTER SEQUENCE customer_id_seq INCREMENT BY 100;

--현재값을 100으로 변경
ALTER SEQUENCE customer_id_seq RESTART WITH 100;

 

 

결론

ORACLE Sequence는 데이터베이스에서 순번을 생성하고 제어하는 데에 유용한 도구이다.

고유한 값이 필요한 경우, Sequence를 활용하여 효율적으로 값을 생성할 수 있다.

Sequence를 적절히 활용하면 데이터베이스의 성능을 향상하고, 데이터의 무결성을 유지하는 데에 도움이 된다.

 

특히, 여러 테이블에서 동일한 시퀀스를 사용하여 외래키 값을 생성하는 경우, 데이터 일관성과 유지보수성을 높일 수 있다.

중복되지 않고 고유한 값을 생성하고 각 테이블의 관계를 명확하게 유지가 가능하여 유용하게 사용했다.


728x90
반응형