Я слышал, как люди ссылались на эту таблицу и не знали, что это значит.
Это своего рода фиктивная таблица с единственной записью, используемой для выбора, когда вас фактически не интересуют данные, но вместо этого хотят получить результаты какой-либо системной функции в выражении select:
например. select sysdate from dual;
От 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 по-прежнему существует.
Это фиктивная таблица с одним элементом в ней. Это полезно, потому что Oracle не допускает таких утверждений, как
SELECT 3+4
Вы можете обойти это ограничение, написав
SELECT 3+4 FROM 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
печатает текущую дату сервера.Таблица служебных программ в Oracle с только 1 строкой и 1 столбцом. Он используется для выполнения ряда арифметических операций и может использоваться обычно там, где требуется генерировать известный результат.
SELECT * FROM dual;
даст одну строку с одним столбцом с именем "DUMMY" и значением "X", как показано ниже:
DUMMY ----- X
Подробнее о DUAL....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Захватывающие эксперименты, сделанные здесь, и более захватывающие объяснения Тома
Вид псевдо-таблицы позволяет запускать команды и возвращать результаты, например, sysdate. Также поможет вам проверить, встал ли Oracle и проверить синтаксис sql и т.д.
Таблица 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;
DUAL мы в основном использовали для получения следующего числа из последовательностей.
Синтаксис: SELECT 'sequence_name'.NEXTVAL FROM DUAL
Это приведет к возврату значения одной колонки с одной строкой (имя столбца NEXTVAL).
Это объект, который должен помещать в него, который возвращает 1 пустую строку. Например: выберите 1 из двойного; возвращает 1
выберите 21 + 44 из дуального; возвращает 65
выберите [sequence].nextval from dual; возвращает следующее значение из последовательности.