ДВОЙНОЙ стол - 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».

Заметки

  1. ^ "Подробнее об истории Oracle". Журнал Oracle. Январь – февраль 2002 г. Архивировано с оригинал 5 декабря 2004 г.. Получено 4 сентября 2013.
  2. ^ Oracle Database SQL Language Reference 11g Release 2 (11.2), выбор из таблицы DUAL
  3. ^ DB2 10.1 InfoCenter :: DB2 Версия 10.1 для Linux, UNIX и Windows - таблица DUAL
  4. ^ Informix 12.10 InfoCenter :: Справочник администратора :: База данных sysmaster :: Таблицы интерфейса системного мониторинга :: sysdual
  5. ^ Что такое Oracle эквивалент «двойной» таблицы в SqlServer?
  6. ^ "Справочное руководство MySQL :: MySQL 5.0 :: 13.2.8 SELECT Syntax". Архивировано из оригинал на 2012-01-03. Получено 2009-03-14.
  7. ^ PostgreSQL :: PostgreSQL Wiki :: Преобразование Oracle в Postgres