개주 훈련일지/🏋️ 전집중 호흡 훈련

시퀀스와 최대 출력 제한

lshfood2 2025. 11. 7. 17:57

[시퀸스]

기존에는 PK컬럼을 추가할 때

NVL 로직을 활용하여 작성하였다.

 

하지만 이제 시퀸스를 활용하면

자동으로 PK값을 +1하여 추가할 수 있다.

 

▼ INSERT 쿼리문

--기존 사용 쿼리문
INSERT INTO BOARD(BID,TITLE,CONTENT,MID) 
VALUES((SELECT NVL(MAX(BID),100) FROM BOARD)+1,'제목','내용','teemo');

--시퀸스 사용 시 쿼리문
INSERT INTO TBL_PRODUCT(PID,CATEGORY,PRODUCT_NAME,PRICE,EA,CONTENT) 
VALUES(SEQ_PRODUCT_PK.NEXTVAL,'마우스','지슈라',100000,999,'상품상세내용');

 

시퀸스는 서브쿼리이므로 사용하려면

시퀸스 테이블을 먼저 만들어주자.

 

▼ 시퀸스 DDL 쿼리문

--서브쿼리 
--시퀸스 생성으로 PK 자동증가 가능
CREATE SEQUENCE SEQ_PRODUCT_PK --테이블명
START WITH 101 --시작값 지정
INCREMENT BY 1; --1씩 증가

DROP SEQUENCE SEQ_PRODUCT_PK;

 

시퀸스는 서브쿼리 테이블이므로

사용하려면  DDL문 실행(CREATE) 및

종료(DROP)을 해야한다.


[최대 출력 제한]

SELECT 쿼리문을 사용할 때

출력 갯수를 지정해주지 않으면

해당하는 모든 데이터가 출력되게 된다.

 

이럴 경우 출력되는 데이터의 갯수를 설정하여

제한시킬 수 있는데 아래와 같이 사용한다.

 

▼ ROWNUM 쿼리문 (최대 출력 제한)

--적용할 쿼리문
--ROWNUM 뒤에 제한하고 싶은 숫자를 쓴다.
SELECT *
FROM (
  SELECT *
  FROM TBL_PRODUCT
  ORDER BY PID DESC
)
WHERE ROWNUM <= 5; --5개까지만 출력

--적용하여 사용해본 쿼리문 (20개 제한)
SELECT * FROM 
(SELECT PID, CATEGORY, PRODUCT_NAME, PRICE, EA, CONTENT 
FROM TBL_PRODUCT WHERE CATEGORY = '마우스' ORDER BY PID DESC)
WHERE ROWNUM <= 20;

 

사용 시 유의사항으로 수행되어야 할 조건이

반드시 ()안에 먼저 들어가야 한다.

 

아래 쿼리를 살펴보자.

--잘못된 예
SELECT PID, CATEGORY, PRODUCT_NAME, PRICE, EA, CONTENT 
FROM TBL_PRODUCT WHERE CATEGORY = '마우스' 
ORDER BY PID DESC 
WHERE ROWNUM <= 20;

문법이 잘못되진 않았으나 쿼리의 의미가 달라진다.

원래의 의미는 '가장 최신순 상품 20개' 인데

위와 같이 사용하게 되면 최신순 정렬이 되기 전에

'테이블에 추가된 20개' 의 상품을 불러오게 된다.

 

그래서 반드시 ORDER BY(정렬)이 진행되고 나서

해당 쿼리가 사용되도록 서브쿼리로 감싸주자.