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

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

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

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

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

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

  SELECT 3+4 

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

  SELECT 3+4 FROM DUAL 

вместо.

Из Википедии

история

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

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

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

оптимизация

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

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

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

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

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

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

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

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

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

SELECT * FROM dual;

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

 DUMMY ----- X 

Подробнее о ДВОЙНОЙ ….

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

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

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

В таблице есть один столбец VARCHAR2 (1) с именем DUMMY, который имеет значение «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 из двойного; возвращается 65

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

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

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

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

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

 select DBMS_METADATA.GET_DDL('TABLE','') from DUAL; select DBMS_METADATA.GET_DDL('FUNCTION','') from DUAL; 

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

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

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

 select my_function() from dual; 

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

Давайте будем гением компьютера.