DB2와 ORACLE의 가상 테이블 비교 (DUAL vs SYSDUMMY1)

**가상 테이블(Virtual Table)**은 물리적으로 존재하지 않지만, 특정 목적을 위해 제공되는 논리적인 테이블입니다.

DB2와 Oracle에서 주로 사용하는 가상 테이블을 비교하면 다음과 같습니다.


1. ORACLE: DUAL 테이블

  • 역할: 오라클에서 하나의 행과 하나의 열을 가진 특수한 테이블로, 함수 호출이나 연산 결과를 반환할 때 사용됩니다.
  • 구성: 단일 행(1 row)과 단일 열(1 column)로 이루어짐.
  • 사용 목적: 단순한 SELECT 문에서 연산 수행, 시스템 함수 호출 등에 사용.
  • 실제 존재: DUAL은 실제 테이블이며, SYS 스키마에 존재함.

예제

SELECT SYSDATE FROM DUAL;  -- 현재 날짜 조회
SELECT 1+1 FROM DUAL;      -- 연산 수행
SELECT UPPER('hello') FROM DUAL; -- 문자열 함수 실행

2. DB2: SYSIBM.SYSDUMMY1 테이블

  • 역할: 오라클의 DUAL과 유사한 기능을 수행하는 IBM Db2의 가상 테이블.
  • 구성: 단일 행을 가지며, 여러 시스템 관련 함수 조회에 사용됨.
  • 사용 목적: 날짜, 시간, 함수 호출 등을 수행할 때 사용됨.
  • 실제 존재: SYSIBM 스키마에 존재하는 시스템 테이블.

예제

SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1;  -- 현재 날짜 조회
SELECT 1+1 FROM SYSIBM.SYSDUMMY1;          -- 연산 수행
SELECT UPPER('hello') FROM SYSIBM.SYSDUMMY1; -- 문자열 함수 실행

참고: SYSIBM.DUAL이 일부 DB2 버전에서 제공될 수 있지만, 일반적으로 SYSIBM.SYSDUMMY1을 사용하는 것이 표준입니다.


3. DB2에서 DUAL 없이 실행하는 방법

DB2에서는 굳이 DUAL 또는 SYSDUMMY1을 사용하지 않고도 VALUES 구문을 사용하여 동일한 작업을 수행할 수 있습니다.

예제

VALUES CURRENT DATE;        -- 현재 날짜 조회
VALUES 1+1;                 -- 연산 수행
VALUES UPPER('hello');      -- 문자열 함수 실행

이 방식은 더 간단하고 FROM 절 없이 바로 값을 반환할 수 있다는 장점이 있습니다.


4. DUAL과 SYSDUMMY1의 차이점 요약

특징 ORACLE DUAL DB2 SYSIBM.SYSDUMMY1

역할 단순한 조회를 위한 가상 테이블 단순한 조회를 위한 가상 테이블
위치 SYS.DUAL SYSIBM.SYSDUMMY1
행 개수 1행 (1 Row) 1행 (1 Row)
일반적인 사용법 SELECT ... FROM DUAL; SELECT ... FROM SYSIBM.SYSDUMMY1;
대체 방법 없음 VALUES 구문 사용 가능

5. 결론

  • Oracle에서는 DUAL 테이블을 사용하여 가상 조회를 수행하지만,
    Db2에서는 SYSIBM.SYSDUMMY1을 사용하거나 VALUES 구문을 활용할 수 있습니다.
  • Db2에서는 FROM SYSIBM.SYSDUMMY1을 생략해도 VALUES 구문을 이용하면 동일한 결과를 얻을 수 있습니다.
  • 최신 Db2 버전에서는 DUAL 테이블이 존재하지 않을 수도 있으며, SYSDUMMY1을 사용하는 것이 표준입니다.

따라서 Oracle에서 DUAL을 사용했던 방식 그대로 Db2에서 적용하려면 SYSIBM.SYSDUMMY1을 쓰거나, 더 간단하게 VALUES 구문을 활용하는 것이 좋습니다. 🚀

'[DB]SQL실무' 카테고리의 다른 글

[기타]SQLSTATE=22001 오류  (0) 2025.04.15
[SQL]WITH 절의 장점 VS 단점  (0) 2025.03.18
[SQL]WITH 절  (1) 2025.03.18
[SQL]Agent stack size 에러  (0) 2025.03.18
DBMS별 숫자 형변환 함수 예시  (0) 2025.03.07

+ Recent posts