Найти тему
Илья Хохлов

Псевдотаблица DUAL

Здравствуй, уважаемый читатель!

В предыдущем уроке я рассказал тебе, что такое псевдостолбцы. На этом уроке постараюсь объяснить, что такое псевдотаблица DUAL и показать для чего она нужна.

Во всех СУБД есть средство позволяющее вывести информацию не из таблицы. Например, как вывести просто текущую дату? Как написать запрос, который бы вывел текущую дату (то есть не дату из какой-либо таблицы)? Если, например, написать SELECT из некоторой таблицы, не указывая в SELECT–е столбцы таблицы-источника, а только SYSDATE (это будет псевдо-столбец), то текущая дата выведется столько раз, сколько в таблице-источнике строк. В исходной таблице может быть как миллион строк, так и ни одной вообще. В последнем случае наш запрос вообще бы ничего не вывел. Мы бы и не получили текущую дату.

Для того, чтобы вывести какую–либо информацию не из таблицы, например, текущую дату, в Оракле предусмотрена псевдотаблица DUAL. Напишем запрос, выводящий текущую дату (и время):

-2

Получим (результат отображения у меня в программе SQL Developer):

-3

SYSDATE возвращает дату и время. Из-за настроенного формата отображения в SQL Developer-е, видно только дату. Выполню эту же команду в программе PL/SQL Developer:

-4

Как я уже написал, SYSDATE возвращает дату со временем. Не просто дату. Даже, если время по–умолчанию в какой–либо программе не отображается. Как сделать из даты со временем только дату (без времени) рассмотрим чуть позже.

В СУБД MS SQL Server и MySQL слово FROM в команде SELECT не обязательно, если не требуется выбирать данные из какой–либо реальной таблицы. Также, в этих СУБД заместо функции SYSDATE есть свои функции, возвращающие текущие дату и время.

В MySQL, чтобы вывести строку с данными не из таблицы, можно писать с DUAL, а можно и без DUAL (как тебе больше нравится). Выведем текущую дату в MySQL с помощью DUAL (сделаем это в программе HeidiSQL):

-5

Вот так в MySQL можно вывести текущую дату без помощи DUAL:

-6

И аналогично в MS SQL Server (на примере работы в программе SQL Server Management Studio), только в СУБД MS SQL Server псевдотаблицы DUAL вообще нет, поэтому пишем просто:

-7

Буду рад, если подпишешься на мой канал или оставишь комментарий к моему посту! Скоро будет продолжение!

Заходи на наш Youtube-канал и найдёшь много интересного и полезного про базы данных и язык SQL.

А здесь ты можешь пройти наш курс обучения языку SQL и получить мощные знания и умения! Всего за 27 уроков до уровня специалиста, имеющего трёхлетний стаж. Много практики в реальной базе данных! С нашей поддержкой и проверкой твоих самостоятельный задач! Записывайся, буду тебя ждать!