본문 바로가기

ComputerScience/Database

[ Database ] Dual 테이블이란?

@Overwrite '[Oracle] Dual 테이블이란?', 갓대희의 작은 공간, https://goddaehee.tistory.com/92

 

[Oracle] Dual 테이블이란?

[Oracle] Dual 테이블이란? 안녕하세요. 갓대희 입니다. 이번 포스팅은 [Oracle Dual] 입니다. :) ▶ Dual 테이블의 정의  1. 오라클 자체에서 제공되는 테이블  2. 간단하게 함수를 이용해서 계산 결과값

goddaehee.tistory.com

 

Dual Table이란?

데이터베이스를 공부하다가 종종 나오는 'SELECT .. FROM DUAL;' 을 보면서 Dual 테이블이 뭘까라는 생각이 들어 찾아보고, 블로그에 공유하게되었습니다.

Dual Table 이란 꼭두각시(dummy) 테이블입니다. 박스는 있지만 안에 내용물은 없는 느낌이랄까요?! Dual Table은 다음과 같은 특징을 갖습니다.

  • 오라클 자체에서 제공하는 테이블
  • 간단하게 함수를 이용해서 계산 결과 값을 확인 할 때 사용
  • 시스템 사용자(sys)가 소유하는 오라클의 표준 테이블
  • 시스템 사용자(sys)가 소유하지만 어느 사용자에서 접근 가능함.
  • 카디널리티(컬럼 수)와 차수()가 모두 1인 dummy 테이블

검색 결과가 하나의 튜플이 나오는 것을 볼수 있다.

 

 

Dual Table의 사용 용도 및 예시

사함수를 실행할 때 임시로 사용하는데 적합합니다. 특히 내장 함수의 쓰임을 알고 싶을 때 특정 테이블 생성할 필요 없이 dual 테이블을 이용하여 함수의 값을 출력할 수 있습니다.

 

예시 1) Function - 세금 계산하는 간단한 함수

CREATE OR REPLACE FUNCTION tax(v_num IN NUMBER) RETURN NUMBER
IS
    v_tax NUMBER;
BEGIN
    v_tax := v_num * 0.07;
    RETURN(v_tax);
END;
select tax(100) from dual;

 

예시 2) 내장 함수

-- 문자열 분할
SELECT SUBSTR('sqlplus',2,5) FROM dual;

-- INSTR : 뒤의 글자의 위치 반환
SELECT INSTR('sql*plus','*') FROM dual;

-- LPAD: 문자열앞에 패딩을 줌. 맨 뒤의 글자를 넣어주면 그 글자를 추가해주는 것.
SELECT LPAD('sql',7,'*') FROM dual;
SELECT RPAD('sql',7,'*') FROM dual;

-- LTRIM: 뒤의 글자를 왼쪽에서 문자열 나오기 전까지 제거.
SELECT LTRIM('**sql**','*') FROM dual;
SELECT RTRIM('**sql**','*') FROM dual;

'ComputerScience > Database' 카테고리의 다른 글

[ Database ] ERD tool  (0) 2019.07.18
[ Database ] Database 관련 자격증  (0) 2019.07.16