ДВОЙНОЙ стол - DUAL table
В ДВОЙНОЙ таблица - специальная однорядная, одноколоночная Таблица присутствует по умолчанию в Oracle и другие база данных установки. В Oracle таблица имеет единственный столбец VARCHAR2 (1) с именем DUMMY, имеющий значение «X». Он подходит для использования при выборе псевдостолбца, например SYSDATE или USER.
Пример использования
Oracle SQL синтаксис требует ОТ предложение, но некоторые запросы не требуют таблиц - в этих случаях можно использовать DUAL.
ВЫБРАТЬ 1+1ОТ двойной;ВЫБРАТЬ 1 ОТ двойной;ВЫБРАТЬ ПОЛЬЗОВАТЕЛЬ ОТ двойной;ВЫБРАТЬ SYSDATE ОТ двойной;ВЫБРАТЬ * ОТ двойной;
История
Чарльз Вайс объясняет, почему он создал DUAL:
Я создал таблицу DUAL как базовый объект в Oracle Data Dictionary. Он никогда не предназначался для того, чтобы его видели, а вместо этого использовался внутри представления, которое, как ожидалось, должно было запрашиваться. Идея заключалась в том, что вы можете выполнить JOIN с таблицей DUAL и создать две строки в результате для каждой строки в вашей таблице. Затем, используя GROUP BY, полученное соединение можно суммировать, чтобы показать объем памяти для экстента DATA и экстента (ов) INDEX. Название DUAL казалось подходящим для процесса создания пары строк из одной.[1]
Оптимизация
Начиная с версии 10g Release 1, Oracle больше не выполняет физический или логический ввод-вывод для таблицы DUAL, хотя таблица все еще существует.[2]
DUAL доступен для всех пользователей базы данных.
В других системах баз данных
Несколько других баз данных (включая Microsoft SQL Server, MySQL, PostgreSQL, SQLite и Teradata) позволяют полностью опустить предложение FROM, если таблица не требуется. Это избавляет от необходимости использовать какой-либо фиктивный стол.
- Жар-птица имеет однострочную системную таблицу RDB $ DATABASE, которая используется так же, как Oracle DUAL, хотя также имеет собственное значение.
- IBM DB2 имеет представление, которое разрешает DUAL при использовании совместимости с Oracle.[3] В нем также есть таблица sysibm.sysdummy1, которая по своим свойствам аналогична таблице Oracle DUAL.
- Informix: Informix версии 11.50 и более поздних имеет таблицу с именем
сисмастер:"информикс".sysdual
с той же функциональностью, но с более подробным названием.[4] Ты можешь использоватьСОЗДАЙТЕ ОБЩЕСТВЕННЫЙ СИНОНИМ двойной ДЛЯ сисмастер:"информикс".sysdual
создать имядвойной
в текущей базе данных с той же функциональностью. - Microsoft Access: Таблица с именем DUAL может быть создана, и ограничение одной строки может быть применено через ADO (Бестабличный запрос UNION в MS Access )
- Microsoft SQL Server: SQL Server не требует фиктивной таблицы. Такие запросы, как 'select 1 + 1', можно запускать без предложения / имени таблицы «from».[5]
- MySQL позволяет указывать DUAL в виде таблицы в запросах, которым не нужны данные из каких-либо таблиц.[6] Он подходит для использования при выборе функции результата, такой как SYSDATE () или ПОЛЬЗОВАТЕЛЬ (), хотя это не принципиально.
- PostgreSQL: DUAL-view может быть добавлен для облегчения портирования с Oracle.[7]
- Снежинка: DUAL поддерживается, но явно не задокументирован. Это появляется в образце SQL для других операций в документации.
- SQLite: VIEW с именем "dual", который работает так же, как "двойная" таблица Oracle, может быть создан следующим образом:
СОЗДАЙТЕ ПОСМОТРЕТЬ двойной ТАК КАК ВЫБРАТЬ 'Икс' ТАК КАК манекен;
- SAP HANA имеет таблицу с именем DUMMY, которая работает так же, как "двойная" таблица Oracle.
- Терадата база данных не требует фиктивной таблицы. Такие запросы, как 'select 1 + 1', можно запускать без предложения / имени таблицы «from».
Заметки
- ^ "Подробнее об истории Oracle". Журнал Oracle. Январь – февраль 2002 г. Архивировано с оригинал 5 декабря 2004 г.. Получено 4 сентября 2013.
- ^ Oracle Database SQL Language Reference 11g Release 2 (11.2), выбор из таблицы DUAL
- ^ DB2 10.1 InfoCenter :: DB2 Версия 10.1 для Linux, UNIX и Windows - таблица DUAL
- ^ Informix 12.10 InfoCenter :: Справочник администратора :: База данных sysmaster :: Таблицы интерфейса системного мониторинга :: sysdual
- ^ Что такое Oracle эквивалент «двойной» таблицы в SqlServer?
- ^ "Справочное руководство MySQL :: MySQL 5.0 :: 13.2.8 SELECT Syntax". Архивировано из оригинал на 2012-01-03. Получено 2009-03-14.
- ^ PostgreSQL :: PostgreSQL Wiki :: Преобразование Oracle в Postgres