목차
접기
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 !!!!!!
쿼리 예문 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.
마지막으로 점검!
Oracle 은 FROM DUAL; 을 명시해야 한다.
B. Mysql
SELECT ( 3 + 5 ) / 2 ;
-- 실행 결과 : 4.0000
SELECT SUBSTRING_INDEX('start Mysql', ' ', 1);
-- 실행 결과 : start
Help.
Mysql 은 FROM DUAL; 생략 가능할 뿐만 아니라 생략해서 사용한다.
728x90
반응형
LIST
'SQL' 카테고리의 다른 글
얄코 mysql 강좌 참고 교재, 강의 링크, 실습 링크 (0) | 2021.08.31 |
---|---|
[ mysql ] 서브쿼리(select) 연습 시작! (0) | 2021.08.17 |
[ mysql ] mysql limit 사용법 (0) | 2021.08.17 |
[ mysql ] mysql 연습하기 좋은 링크 (0) | 2021.08.17 |
[ mysql ] 2개의 테이블을 동시에 update하는 방법 (0) | 2021.08.17 |