본문 바로가기
SQL

오라클 DUAL 테이블로 원하는 개수만큼 행 생성하기

by 긴소리 2025. 3. 6.
728x90
반응형

개발을 하다 보면 특정 개수의 행을 임의로 생성해야 할 때가 있어요.
예를 들면,
✅ 테스트 데이터 생성
✅ 샘플 쿼리 실행
✅ 특정 패턴의 데이터를 반복해서 출력해야 하는 경우

이럴 때 오라클의 DUAL 테이블을 활용하면 간단하게 원하는 개수만큼 데이터를 만들 수 있습니다.
특히 CONNECT BY LEVEL을 활용하면 코드 몇 줄만으로 자유롭게 행 개수를 조절할 수 있지요.

오늘은 DUAL 테이블을 활용한 다양한 행 생성 방법을 소개해볼게요!

💡 DUAL 테이블이란?

오라클의 DUAL 테이블은 오직 한 개의 행과 한 개의 컬럼만을 가진 가상의 테이블이에요.
주로 간단한 연산을 수행할 때 많이 사용되죠.

예를 들어, 아래처럼 DUAL을 활용하면 연산 결과만 깔끔하게 조회할 수 있습니다.

SELECT 10 * 5 FROM DUAL;

결과는 50개의 행이 출력됩니다

원래 테이블에서 데이터를 가져오지 않고, 단순한 값을 출력하고 싶을 때 DUAL을 사용하면 편리해요.

하지만 이 DUAL 테이블을 살짝 변형하면 다중 행을 만들 수도 있습니다. 그 방법을 지금부터 알아볼게요! 🔥


  • 1. CONNECT BY LEVEL을 활용한 행 생성

    가장 간단하면서도 강력한 방법은 CONNECT BY LEVEL을 활용하는 것입니다.

SELECT LEVEL 
FROM DUAL
CONNECT BY LEVEL <= 10;


결과는 아래와 같이 보여지게 됩니다.

LEVEL
-----
1
2
3
4
5
6
7
8
9
10


LEVEL은 오라클 계층 쿼리에서 자동으로 증가하는 값,
CONNECT BY LEVEL <= N 조건을 설정하면 N개의 행을 생성할 수 있어요.

즉, 이 방식으로 원하는 개수만큼 행을 자유롭게 생성 가능! 🎯


  • 2. ROWNUM을 활용한 행 생성

    LEVEL 대신 ROWNUM을 활용해서도 다중 행을 만들 수 있어요.
SELECT ROWNUM 
FROM DUAL 
CONNECT BY ROWNUM <= 10;

ROWNUM을 활용하는 방식이지만, LEVEL을 쓰는 방식이 더 일반적이라 실무에서는 CONNECT BY LEVEL을 더 많이 사용해요.


  • 3. 서브쿼리를 이용한 행 생성
    이 방법은 DUAL을 직접 반복 호출하는 방식이에요

SELECT ROWNUM 
FROM (SELECT 1 FROM DUAL CONNECT BY LEVEL <= 10);


여기서 DUAL을 CONNECT BY LEVEL과 함께 서브쿼리로 감싸주면 조금 더 유연하게 활용할 수 있어요.


  • 4. CROSS JOIN을 활용한 대량 행 생성

    만약 엄청 많은 행을 한 번에 만들어야 한다면?
    이럴 때는 CROSS JOIN을 활용하는 것도 좋은 방법이에요.

SELECT ROWNUM 
FROM DUAL, (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 10);


DUAL 테이블을 CROSS JOIN 형태로 조합하면 더 많은 행을 생성 가능합니다.

💡 대량 데이터 생성이 필요할 때 유용하지만, 성능 이슈가 있을 수 있으니 주의하세요!


  • 5. PL/SQL을 활용한 동적 행 생성

    만약 N개의 행을 동적으로 생성하고 싶다면?
    PL/SQL을 활용할 수도 있어요!

DECLARE
    v_count NUMBER := 10;
BEGIN
    FOR i IN 1..v_count LOOP
        DBMS_OUTPUT.PUT_LINE(i);
    END LOOP;
END;
/


이 방식은 PL/SQL 환경에서 활용 가능,
반복문을 사용해 동적으로 개수를 조절할 수 있음

하지만 일반적인 SQL 쿼리보다는 활용도가 낮아요.



오늘은 오라클 DUAL 테이블을 활용해 원하는 개수만큼 행을 생성하는 방법을 알아봤어요.

🔹 가장 많이 쓰는 방법은 CONNECT BY LEVEL 활용하기!

🔹 ROWNUM, CROSS JOIN, PL/SQL을 활용하면 더 다양한 방식으로 응용 가능

🔹 실무에서는 테스트 데이터 생성, 날짜 리스트 만들기 등에 자주 활용됨

이 방법을 잘 활용하면 SQL 작성이 훨씬 편해질 거예요!
꼭 연습해 보세요! 🎯


#오라클 #오라클dual #dual테이블활용 #오라클rownum #오라클행갯수

반응형

댓글