SQL

[ mysql ] Dual 테이블, from dual 이란?

JooKit 주킷 2021. 8. 17. 22:59
목차 접기
728x90
반응형




Dual 설명 

dual 은 펑션이나 계산식을 테이블 생성 없이 수행해 보기 위한 용도로 사용하는 일종의 'dummy' 테이블이다.

 

 

 

Help.



dummy 테이블

- 실제 데이터를 저장하거나 관리하지 않고, 쿼리 실행을 위한 임시적인 목적으로 사용하는 테이블

  

 

 

테이블에 어떤 값이 들어있는 것이 아니라 임시의 공간이라고 생각하면 된다.

 

 

 

 

Dual 테이블 존재 이유


dual 테이블이 존재하는 이유는 SQL 함수에 대한 쓰임을 알고 싶을 때, 출력되는 데이터를 확인해 보기 위함으로
특정 테이블을 생성할 필요 없이 dual 테이블을 이용하여 함수의 값을 리턴(return) 받을 수 있다.

 

 

 

 

 

FROM DUAL 쿼리 예문 2개

 

쿼리 예문 2-1

Oracle

SELECT CONCAT('Hello World', ' ', '!!!!!!')
FROM DUAL;

 

위의 쿼리를 날려보면
아래와 같은 결과가 출력된다.

Hello World !!!!!!

 

 

 

 

 

쿼리 예문 2-2

Mysql

SELECT CONCAT('Hello World', ' ', '!!!!!!');

 

쿼리 예문 2-2의 쿼리를 실행해도 아래와 같이 동일한 결과가 출력되는 것을 볼 수 있다.

Hello World !!!!!!

 

dual 테이블 조회 결과 이미지

 

 

 

 

 

쿼리 예문 2-1과 2-2의 차이점

Help.


쿼리 예문 2개의 끝나는 부분을 비교해 보면, 쿼리 예문 2-2에서는 CONCAT() 함수 뒤에 FROM DUAL;생략된 것을 확인할 수 있다.

이 차이는 Oracle에서는 FROM DUAL; 을 붙여서 실행해야 하지만 Mysql에서는 FROM DUAL; 부분을 생략하고 실행이 가능하다.


그래서 연습을 할 때에도 실무를 할 때도 Mysql에서는 FROM DUAL; 을 붙이지 않고 테이블 생성 없이 함수나 계산식을 수행해 볼 수 있다.

 

 

 

 

 

 

 

 

추가 쿼리 예문 

 

A와 B 예문 모두 결과 값은 당연히 동일하다.

 

A. Oracle 

SELECT ( 3 + 5 ) / 2 FROM DUAL; 

-- 실행 결과 : 4.0000

SELECT SUBSTRING_INDEX('start Mysql', ' ', 1) FROM DUAL; 

-- 실행 결과 : start

 

Help.


마지막으로 점검! 

OracleFROM DUAL; 을 명시해야 한다.

 

 

 

 

B. Mysql

SELECT ( 3 + 5 ) / 2 ; 

-- 실행 결과 : 4.0000

SELECT SUBSTRING_INDEX('start Mysql', ' ', 1); 

-- 실행 결과 : start

 

Help.


Mysql  FROM DUAL; 생략 가능할 뿐만 아니라 생략해서 사용한다.

 

728x90
반응형
LIST