Что такое двойная таблица в Oracle? - PullRequest
214 голосов
/ 16 сентября 2008

Я слышал, как люди обращались к этой таблице, и не был уверен, о чем она.

Ответы [ 14 ]

213 голосов
/ 16 сентября 2008

Это своего рода фиктивная таблица с единственной записью, используемой для выбора, когда вы на самом деле не заинтересованы в данных, а вместо этого хотите получить результаты некоторых системных функций в операторе выбора:

например. select sysdate from dual;

См. http://www.adp -gmbh.ch / ora / misc / dual.html

74 голосов
/ 16 сентября 2008

Это фиктивная таблица с одним элементом. Это полезно, потому что Oracle не допускает такие операторы, как

 SELECT 3+4

Вы можете обойти это ограничение, написав

 SELECT 3+4 FROM DUAL

вместо.

66 голосов
/ 16 сентября 2008

С Википедия

История

Таблица DUAL была создана Чаком Вейссом из корпорации Oracle для предоставления таблицы для объединения во внутренние представления:

Я создал таблицу DUAL как базовый объект в Oracle Data Dictionary. Это никогда не предназначалось, чтобы быть замеченным непосредственно, но вместо этого использовалось внутри представления, которое, как ожидается, будет запрошено. Идея заключалась в том, что вы мог бы присоединиться к таблице DUAL и создать две строки в результате для каждой строки в вашей таблице. Затем с помощью GROUP BY результирующее объединение может быть суммировано, чтобы показать объем памяти для экстент DATA и для экстента (ов) INDEX. Название, ДВОЙНОЙ, казалось подходит для процесса создания пары строк только из одного. 1

Это может быть неочевидно из вышесказанного, но исходная таблица DUAL содержала две строки (отсюда и ее название). В настоящее время в нем только один ряд.

Оптимизация

Изначально DUAL был таблицей, и ядро ​​базы данных выполняло дисковый IO для таблицы при выборе из DUAL. Этот дисковый ввод-вывод обычно представлял собой логический ввод-вывод (не связанный с доступом к физическому диску), поскольку дисковые блоки обычно уже кэшировались в памяти. Это привело к большому количеству логических операций ввода-вывода по сравнению с таблицей DUAL.

Более поздние версии базы данных Oracle были оптимизированы, и база данных больше не выполняет физический или логический ввод-вывод для таблицы DUAL, даже если таблица DUAL все еще фактически существует.

20 голосов
/ 16 сентября 2008

Я думаю, что эта статья в Википедии может помочь уточнить.

http://en.wikipedia.org/wiki/DUAL_table

Таблица DUAL представляет собой особую однорядную таблицу таблица присутствует по умолчанию во всех Oracle установка базы данных. это подходит для использования при выборе псевдостолбца такие как SYSDATE или USER Таблица имеет один столбец VARCHAR2 (1) называется DUMMY со значением "X"

10 голосов
/ 16 сентября 2008

Это специальная таблица в Oracle. Я часто использую его для расчетов или проверки системных переменных. Например:

  • Select 2*4 from dual распечатывает результат расчета
  • Select sysdate from dual печатает текущую дату сервера.
4 голосов
/ 07 октября 2013

Служебная таблица в Oracle только с 1 строкой и 1 столбцом. Он используется для выполнения ряда арифметических операций и может использоваться, как правило, там, где необходимо сгенерировать известный результат.

ВЫБРАТЬ * ИЗ двойного;

даст одну строку с одним столбцом с именем «DUMMY» и значением «X», как показано здесь:

DUMMY
----- 
X
4 голосов
/ 16 сентября 2008

Вид псевдотаблицы, с которой вы можете запускать команды и получать результаты, такие как sysdate. Также помогает проверить работоспособность Oracle, проверить синтаксис sql и т. Д.

3 голосов
/ 31 января 2012

Больше фактов о ДВОЙНОЙ ....

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388

Захватывающие эксперименты, сделанные здесь, и более захватывающие объяснения Тома

2 голосов
/ 16 сентября 2008

Таблица DUAL - это специальная таблица из одной строки, присутствующая по умолчанию во всех установках базы данных Oracle. Он подходит для использования при выборе псевдостолбца, такого как SYSDATE или USER

Таблица содержит один столбец VARCHAR2 (1) с именем DUMMY, значение которого равно "X"

Вы можете прочитать все об этом в http://en.wikipedia.org/wiki/DUAL_table

1 голос
/ 16 сентября 2008

DUAL необходим при разработке PL / SQL для использования функций, доступных только в SQL

, например

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...