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

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

Ответ 1

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

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

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

Ответ 2

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

 SELECT 3+4

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

 SELECT 3+4 FROM DUAL

вместо.

Ответ 3

От Wikipedia

История

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

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

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

Оптимизация

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

SELECT * FROM dual;

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

DUMMY
----- 
X

Ответ 9

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

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

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

Ответ 10

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

например.

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

Ответ 11

Это объект, который должен помещать в него, который возвращает 1 пустую строку. Например: выберите 1 из двойного; возвращает 1

выберите 21 + 44 из дуального; возвращает 65

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

Ответ 12

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

Синтаксис: SELECT 'sequence_name'.NEXTVAL FROM DUAL

Это приведет к возврату значения одной колонки с одной строкой (имя столбца NEXTVAL).

Ответ 13

другая ситуация, которая требует select... from dual - это когда мы хотим получить код (определение данных) для различных объектов базы данных (таких как TABLE, FUNCTION, TRIGGER, PACKAGE), используя встроенную функцию DBMS_METADATA.GET_DDL:

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

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

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

РЕДАКТИРОВАТЬ

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

select my_function(<input_params>) from dual;

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

Ответ 14

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

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

SELECT SYSDATE from dual;