티스토리 뷰

 
 
 

📌 SQL SEQUENCE 란?

SQL에서 시퀀스(Sequence)는 주로 고유한 숫자 값을 자동으로 생성할 때 사용되는 객체입니다.

예를 들어, 각 레코드에 대해 고유한 ID를 자동으로 생성하는 데 사용됩니다.

시퀀스는 테이블에 삽입되는 데이터의 일관성을 유지하고, 번호 매기기 등의 작업을 쉽게 할 수 있도록

도와줍니다.

 

 

 👉 사용 예제 보기 👇

 

 👉 사용 예제 보기 👇

 

 

📌 SQL 시퀀스 기본 문법

SQL 시퀀스를 사용하면 자동으로 고유한 값을 생성할 수 있습니다.

예를 들어, 테이블에 새로운 데이터를 삽입할 때마다 자동으로 증가하는 값이 필요할 때 시퀀스를 사용합니다.

 

 

1. 시퀀스 생성 (CREATE SEQUENCE)

CREATE SEQUENCE sequence_name
START WITH starting_value
INCREMENT BY increment_value
MINVALUE min_value
MAXVALUE max_value
CACHE cache_size;
 
    • sequence_name : 시퀀스의 이름
    • START WITH : 시퀀스 시작값
    • INCREMENT BY : 시퀀스가 증가하는 값
    • MINVALUE : 최소값 (선택 사항)
    • MAXVALUE : 최대값 (선택 사항)
    • CACHE : 시퀀스 값을 캐시할 수 있는 개수

 

 

2. 시퀀스 값 얻기 (NEXTVAL, CURRVAL)

    • NEXTVAL : 시퀀스에서 다음 값을 가져옵니다.
    • CURRVAL : 현재 시퀀스의 값을 가져옵니다. (단, NEXTVAL을 한번 호출한 후 사용 가능)
SELECT sequence_name.NEXTVAL FROM dual;
 
SELECT sequence_name.CURRVAL FROM dual;
 

* 여기서 dual은 Oracle 데이터베이스에서 가상 테이블로 사용됩니다.

 

 

3. 시퀀스 값 삽입 예시

    • 테이블에 데이터를 삽입할 때 시퀀스를 사용하여 자동으로 고유한 값을 생성할 수 있습니다.
INSERT INTO employees (employee_id, first_name, last_name, department)
VALUES (employee_id_seq.NEXTVAL, 'John', 'Doe', 'Sales');
 

 

 

📌 사용 예제

 

 👉 꿀팁 예제 보기 👇

 

 👉 꿀팁 예제 보기 👇

 

1. 시퀀스 생성 및 사용

CREATE SEQUENCE employee_id_seq
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 10000
CACHE 10;
 
    • 이 시퀀스는 employee_id_seq라는 이름으로 생성되며, START WITH 1로 시작하고, INCREMENT BY 1로 1씩 증가합니다.
    • 최소값은 1, 최대값은 10,000이며, 캐시 크기는 10으로 설정됩니다.

 

 

2. 시퀀스 값 삽입 예시

INSERT INTO employees (employee_id, first_name, last_name, department)
VALUES (employee_id_seq.NEXTVAL, 'Alice', 'Johnson', 'HR');
 
    • employee_id_seq.NEXTVAL은 employee_id_seq에서 다음 값을 가져와 employee_id 컬럼에 삽입됩니다.

 

 

3. 시퀀스 값 조회 예시

SELECT employee_id_seq.CURRVAL FROM dual;
 
    • CURRVAL은 현재 시퀀스 값, 즉 마지막으로 생성된 값을 반환합니다. NEXTVAL을 먼저 호출한 후 사용해야 합니다.

 

 

 

 

📌 GOOD 사용법

 

1. 고유한 ID 자동 생성

CREATE SEQUENCE employee_id_seq
START WITH 1
INCREMENT BY 1;
 

그리고 새로운 직원을 추가할 때

INSERT INTO employees (employee_id, first_name, last_name, department)
VALUES (employee_id_seq.NEXTVAL, 'Bob', 'Smith', 'Engineering');
 
    • 이 방식은 ID 충돌을 방지하고, 데이터 삽입 시 자동으로 고유한 값을 생성할 수 있게 합니다.

 

 

 

2. 시퀀스 캐시 활용

    • 시퀀스는 자주 사용되는 경우 성능이 중요합니다.
    • CACHE 옵션을 사용하여 값을 미리 생성해두면 성능이 향상됩니다.
CREATE SEQUENCE employee_id_seq
START WITH 1
INCREMENT BY 1
CACHE 20;
 
    • CACHE를 설정하면 시퀀스가 여러 값을 미리 메모리에 저장하여 성능이 좋아집니다. 다만, 서버가 재시작되면 캐시된 값이 사라질 수 있습니다.

 

 

 

 

📌 BAD 사용법

1. 시퀀스 값 중복 사용

    • 시퀀스를 사용하면서 실수로 값을 중복해서 사용하는 경우가 있을 수 있습니다.
    • 예를 들어, CURRVAL을 호출하기 전에 NEXTVAL을 호출하지 않으면 오류가 발생할 수 있습니다.
-- 잘못된 사용: NEXTVAL 호출 없이 CURRVAL 호출
SELECT employee_id_seq.CURRVAL FROM dual;  -- 오류 발생
 
    • 해결 방법: NEXTVAL을 먼저 호출한 후 CURRVAL을 사용할 수 있습니다.
SELECT employee_id_seq.NEXTVAL FROM dual;
SELECT employee_id_seq.CURRVAL FROM dual;
 

 

 

2. 시퀀스 값의 범위 관리 부족

    • 시퀀스의 MAXVALUE와 MINVALUE를 설정하지 않으면, 시퀀스가 계속 증가하다가 범위를 벗어나게 되어 오류를 발생시킬 수 있습니다. 예를 들어, 시퀀스의 값이 너무 커져서 MAXVALUE를 초과하면 오류가 발생할 수 있습니다.

 

 

 

 

시퀀스를 활용하면 코드의 가독성이 높아지고, 데이터베이스의 성능도 향상시킬 수 있습니다.

하지만 시퀀스의 범위 설정이나 값 중복 사용에 주의해야 하며, 잘못된 사용은 오류를 초래할 수 있습니다.

시퀀스를 제대로 활용하면 데이터를 보다 효율적으로 관리하고, 자동화된 처리를 통해 오류를 줄일 수 있습니다.

 

 

 

 

 

[DB] SQL문 ORDER BY 사용 방법 및 예제

📌 SQL ORDER BY 설명ORDER BY는 쿼리 결과를 특정 열을 기준으로 정렬할 때 사용됩니다. 기본적으로 오름차순(ASC) 정렬을 사용하며, 내림차순 정렬을 위해서는 DESC 키워드를 사용합니다. 데이터를

worldalltip.com

 

 

[DB] SQL문 GROUP BY 사용 방법 및 예제

📌 SQL GROUP BY 설명 GROUP BY는 결과 집합을 하나 이상의 열을 기준으로 그룹화하여 요약 정보를 추출할 때 사용됩니다. 주로 집계 함수(SUM, COUNT, AVG, MAX, MIN)와 함께 사용되어 특정 기준에 따라

worldalltip.com

 

 

[DB] SQL문 WHERE절 사용 방법 및 예제

📌 SQL WHERE 절WHERE 절은 SQL 쿼리에서 레코드 필터링 조건을 지정하는 데 사용됩니다.특정 데이터를 검색하고, 쿼리 효율성을 높이고, 데이터 과부하를 최소화하는 데 필수적입니다.SELECT column1, co

worldalltip.com

 

반응형