DBMS

페이지네이션 프로젝트에서 테이블에 샘플 데이터 insert 할 때, 시퀸스 사용해보기

보배 진 2025. 12. 9. 16:56

 

 

< 기존에 만들었던 테이블 >

-- 테이블 생성
CREATE TABLE ITEM (
    ITEM_PK NUMBER PRIMARY KEY,
    ITEM_NAME VARCHAR2(100) NOT NULL,
    ITEM_PRICE NUMBER NOT NULL,
    ITEM_STOCK NUMBER NOT NULL,
    ITEM_DESCRIPTION VARCHAR2(3000),
    ITEM_IMAGE_URL VARCHAR2(255)
);

-- 샘플 데이터 INSERT
INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(1, '크리스마스 트리 미니', 25000, 10, '작은 탁상용 크리스마스 트리, LED 조명 포함', 'images/kiki.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(2, '산타 인형', 15000, 20, '귀여운 산타 인형, 어린이 선물용', 'images/kiki2.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(3, 'LED 크리스마스 전구', 12000, 30, '다채로운 LED 전구 10m, 실내외 사용 가능', 'images/kiki3.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(4, '눈사람 장식', 18000, 15, '부드러운 펠트 소재의 눈사람 장식', 'images/kiki5.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(5, '크리스마스 리스', 22000, 12, '전통적인 크리스마스 리스, 현관문 장식용', 'images/kiki7.jpg');

 

상품 목록을 보여주는 테이블을 만들 때

이렇게 테이블을 생성해서 값을 넣었다

 

 

PK 값을 자동 증가로 만들고자 시퀸스를 생성하려고 한다

 

 


 

 

테이블을 삭제하고 시퀀스를 적용하여 다시 만들어보도록 하겠습니다

테이블 삭제 명령어 : DROP TABLE ITEM;

 

 

 

 

테이블 생성

CREATE TABLE ITEM (
    ITEM_PK NUMBER PRIMARY KEY,
    ITEM_NAME VARCHAR2(100) NOT NULL,
    ITEM_PRICE NUMBER NOT NULL,
    ITEM_STOCK NUMBER NOT NULL,
    ITEM_DESCRIPTION VARCHAR2(3000),
    ITEM_IMAGE_URL VARCHAR2(255)
);

 

상품 PK

상품명

가격

재고

상품 설명

상품 이미지 URL

 

 

 

 

 

 

시퀸스 생성

-- 시퀀스 생성 (자동 증가용)
-- ITEM_PK용 시퀀스 생성
CREATE SEQUENCE ITEM_SEQ
START WITH 1       -- 시작값
INCREMENT BY 1     -- 1씩 증가
NOCACHE            -- 캐시 사용 안함
NOCYCLE;           -- 최대값 도달 시 재사용 안함

 

START WITH 1 ➡ 첫 PK는 1부터 시작

INCREMENT BY 1    1씩 증가

NOCACHE   캐시 없이 생성 (간단 테스트용)

NOCYCLE   시퀸스 재사용 금지

 

 

 

 

시퀀스 삭제 명령어 :

DROP SEQUENCE ITEM_SEQ;

 

시퀀스 존재 여부 확인 :

SELECT SEQUENCE_NAME FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'ITEM_SEQ';

 

 

 

 

 

그리고 샘플 데이터를 넣어줍니다

시퀀스를 사용하여 숫자가 자동으로 증가됩니다.

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL)
VALUES (ITEM_SEQ.NEXTVAL, '크리스마스 트리 미니', 25000, 10, '작은 탁상용 크리스마스 트리, LED 조명 포함', 'images/kiki.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(ITEM_SEQ.NEXTVAL, '산타 인형', 15000, 20, '귀여운 산타 인형, 어린이 선물용', 'images/kiki2.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(ITEM_SEQ.NEXTVAL, 'LED 크리스마스 전구', 12000, 30, '다채로운 LED 전구 10m, 실내외 사용 가능', 'images/kiki3.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(ITEM_SEQ.NEXTVAL, '눈사람 장식', 18000, 15, '부드러운 펠트 소재의 눈사람 장식', 'images/kiki5.jpg');

INSERT INTO ITEM (ITEM_PK, ITEM_NAME, ITEM_PRICE, ITEM_STOCK, ITEM_DESCRIPTION, ITEM_IMAGE_URL) VALUES
(ITEM_SEQ.NEXTVAL, '크리스마스 리스', 22000, 12, '전통적인 크리스마스 리스, 현관문 장식용', 'images/kiki7.jpg');

 

 

 

 

데이터베이스에 새 상품을 insert하는 명령어이다

기본구조

INSERT INTO 테이블명 (컬럼1, 컬럼2, …)
VALUES (값1, 값2, …);

 

INSERT INTO ITEM  :  ITEM 테이블에 데이터를 넣겠다는 의미

ITEM_PK ITEM_SEQ.NEXTVAL 기본키(아이템 고유번호), 시퀀스(자동 증가 번호) 사용
ITEM_NAME '크리스마스 트리 미니' 상품 이름
ITEM_PRICE 25000 가격
ITEM_STOCK 10 재고 수량
ITEM_DESCRIPTION '작은 탁상용 크리스마스 트리, LED 조명 포함' 상품 설명
ITEM_IMAGE_URL 'images/kiki.jpg' 이미지 파일 경로

 

 

 

 

ITEM_SEQ.NEXTVAL

자동으로 1씩 증가하는 번호를 가져오는 Oracle 시퀀스

매번 새로운 아이템을 넣을 때 고유번호 자동 생성 가능