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

187

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

  • 2
    asktom.oracle.com/pls/asktom/… подробности о двойном
  • 0
    Лучший ответ здесь - все о двойном asktom.oracle.com/pls/asktom/… , люди не уделяют больше внимания вышеупомянутой ссылке на комментарий, поэтому я комментирую здесь .. посмотрите на нее, вы не пожалеете
Теги:
dual-table

12 ответов

177
Лучший ответ

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

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

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

57

От 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 по-прежнему существует.

48

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

 SELECT 3+4

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

 SELECT 3+4 FROM DUAL

вместо.

  • 1
    Это лучший ответ.
21

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

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

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

7

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

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

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

SELECT * FROM dual;

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

DUMMY
----- 
X
3

Подробнее о DUAL....

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

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

3

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

2

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

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

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

1

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

например.

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

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

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

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

  • 1
    Это не нужно, так как 11g. Последовательности можно использовать в PL / SQL.
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню