DUAL — магическая таблица Oracle
Когда только начинаешь работать с Oracle Database, встречаешь странную таблицу — DUAL.
Что это за чудо и зачем она нужна?
DUAL — это специальная таблица, созданная для выполнения запросов, которые не требуют данных из реальной таблицы.
Почему вообще появилась DUAL?
В Oracle синтаксис SELECT требует указания источника данных. Даже если вам нужно просто выполнить выражение, вызвать функцию или получить системное значение — нужен FROM с таблицей.
Чтобы не создавать отдельные "временные" таблицы под каждый запрос, Oracle ввела универсальную таблицу DUAL.
Синтаксис вызова
SELECT 1 AS result_from_dual FROM dual
Здесь мы просто хотим получить цифру 1 — без обращения к конкретным данным
Фишка DUAL
- Всегда содержит **ровно одну строку** и один столбец ('DUMMY' со значением 'X').
- Нужна, чтобы синтаксис SQL оставался корректным (ведь 'SELECT' в Oracle требует обязательное указание источника данных).
DUAL очень лёгкая и оптимизированная — Oracle не читает с диска, а создаёт её результат прямо в памяти. ⚡
Когда использовать DUAL?
- Для получения системных значений (
SYSDATE,USER,UIDи др.). - Для простых вычислений в SQL без обращения к таблицам.
- Для тестирования функций и выражений.
Примеры запросов с DUAL
SELECT SYSDATE FROM dual;
SELECT 10 + 20 FROM dual;
SELECT USER FROM dual;
Интересный факт
В некоторых других базах данных (например, PostgreSQL) таблица DUAL не требуется — там можно выполнять запросы без источника данных.
Но в Oracle DUAL — это своего рода "магический костыль", который делает запросы формально правильными.
DUAL — это маленькая, но очень важная часть повседневной работы в Oracle. Без неё многие запросы просто не выполнились бы!
Полезные ссылки
- Официальная документация Oracle — DUAL (читать документацию)
- Online выполнение запросов Oracle (выполнить запрос)
- PL/SQL Developer (скачать)
- SQL Developer (скачать)
- Toad for Oracle (скачать)
Заключение
DUAL = "виртуальная" таблица для выполнения вычислений, вызова функций и получения системных значений без лишнего кода.
Контакты
Написать автору | Telegram | Сайт автора
Следите за моим блогом — в следующих постах расскажу ещё больше лайфхаков и интересных особенностей Oracle Database!