Что такое двойная таблица в Oracle?

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

13 ответов


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

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

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


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

 SELECT 3+4

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

 SELECT 3+4 FROM DUAL

вместо.


с Википедия

история

двойная таблица была создана Чаком Вайсом из Oracle corporation, чтобы предоставить таблицу для присоединения к внутренним представлениям:

я создал двойную таблицу в качестве базового объекта в словаре данных Oracle. Он никогда не должен был быть виден сам, а вместо этого использовался внутри вида, который должен был быть запрошен. Идея была в том, что вы смогл сделать соединение к двойной таблице и создать две строки в результате для каждой строки в таблице. Затем, используя GROUP BY, результирующее соединение можно суммировать, чтобы показать объем хранения для экстент данных и экстент(ы) индекса. Имя, двойное, казалось apt для процесса создания пары строк только из одного. 1

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

оптимизация

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

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


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

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

двойная таблица особенная ОДН-строка таблица присутствует по умолчанию во всех Oracle установки баз данных. Это подходит для использования при выборе псевдостолбцом например, SYSDATE или USER таблица имеет один столбец VARCHAR2 (1) называется Манекен, который имеет значение "X"


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

  • Select 2*4 from dual выводит результат расчета
  • Select sysdate from dual печать текущей даты сервера.

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


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

выберите * из dual;

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

DUMMY
----- 
X

больше фактов о двойном....

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

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


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

таблица имеет один столбец VARCHAR2(1), называемый фиктивным, который имеет значение "X"

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


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

например

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;

Это объект для ввода из этой возвращаемой 1 пустой строки. Например: выберите 1 из двух; возвращает 1

выберите 21 + 44 из dual; возвращает 65

выберите [последовательности].nextval от dual; возвращает следующее значение из последовательности.


DUAL Мы в основном использовали для получения следующего номера из последовательностей.

синтаксис: выберите 'sequence_name'.NEXTVAL ОТ DUAL

Это вернет значение столбца one row one (имя столбца NEXTVAL).


другая ситуация, которая требует select ... from dual когда мы хотим получить код( определение данных) для различных объектов базы данных (например, таблица, функция, триггер, пакет), используя встроенный :

select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;

select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;

in верно, что в настоящее время IDEs предлагают возможность просмотра DDL таблицы, но в более простых средах, таких как SQL Plus, это может быть очень удобно.

редактировать

более общая ситуация: в основном, когда нам нужно использовать любую процедуру PL/SQL внутри стандартного оператора SQL или когда мы хотим вызвать процедуру из командной строки:

select my_function(<input_params>) from dual;

оба рецепта взяты из книги "Oracle PL / SQL Recipes" Джоша Джуно и Мэтта Арены