Co to jest podwójny stół w Oracle?


Odpowiedzi:



79

To jest stół zastępczy z jednym elementem. Jest to przydatne, ponieważ Oracle nie zezwala na takie instrukcje

 SELECT 3+4

Możesz obejść to ograniczenie, pisząc

 SELECT 3+4 FROM DUAL

zamiast.


70

Z Wikipedii

Historia

Tabela DUAL została stworzona przez Chucka Weissa z korporacji Oracle, aby zapewnić tabelę do łączenia w widokach wewnętrznych:

Stworzyłem tabelę DUAL jako podstawowy obiekt w Oracle Data Dictionary. Nigdy nie miał być widziany sam, ale zamiast tego użyty w widoku, który miał być pytany. Pomysł polegał na tym, że można wykonać DOŁĄCZ do tabeli DUAL i utworzyć w wyniku dwa wiersze dla każdego wiersza w tabeli. Następnie, używając GROUP BY, powstałe sprzężenie może być podsumowane, aby pokazać ilość miejsca dla zakresu DATA i zakresu INDEX. Nazwa DUAL wydawała się trafna w procesie tworzenia pary rzędów z jednego. 1

Z powyższego może nie być oczywiste, ale pierwotna tabela DUAL miała w sobie dwa wiersze (stąd jej nazwa). Obecnie ma tylko jeden rząd.

Optymalizacja

DUAL był pierwotnie tabelą, a silnik bazy danych wykonywał operacje dyskowe we / wy na stole podczas wybierania z DUAL. To IO dysku było zwykle logicznym IO (nie wymagającym fizycznego dostępu do dysku), ponieważ bloki dysku były zwykle już buforowane w pamięci. Spowodowało to dużą liczbę logicznych operacji we / wy względem tabeli DUAL.

Późniejsze wersje bazy danych Oracle zostały zoptymalizowane i baza danych nie wykonuje już fizycznych ani logicznych operacji we / wy w tabeli DUAL, mimo że tabela DUAL nadal istnieje.


21

Myślę, że ten artykuł na Wikipedii może pomóc wyjaśnić.

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

Tabela DUAL jest specjalną tabelą jednorzędową domyślnie występującą we wszystkich instalacjach baz danych Oracle. Nadaje się do użycia przy wybieraniu pseudokolumny, takiej jak SYSDATE lub USER. Tabela ma jedną kolumnę VARCHAR2 (1) o nazwie DUMMY o wartości „X”


10

To specjalny stół w Oracle. Często używam go do obliczeń lub sprawdzania zmiennych systemowych. Na przykład:

  • Select 2*4 from dual wypisuje wynik obliczeń
  • Select sysdate from dual drukuje bieżącą datę serwera.

4

Rodzaj pseudo-tabeli, z którą można uruchamiać polecenia i uzyskiwać wyniki, takie jak sysdate. Pomaga także sprawdzić, czy Oracle działa, i sprawdzić składnię SQL itp.


4

Tabela narzędzi w Oracle z tylko 1 wierszem i 1 kolumną. Służy do wykonywania szeregu operacji arytmetycznych i może być stosowany ogólnie tam, gdzie trzeba wygenerować znany wynik.

WYBIERZ * Z dual;

da pojedynczy wiersz z jedną kolumną o nazwie „DUMMY” i wartością „X”, jak pokazano tutaj:

DUMMY
----- 
X


2

Tabela DUAL jest specjalną tabelą jednorzędową domyślnie występującą we wszystkich instalacjach baz danych Oracle. Jest odpowiedni do użycia przy wybieraniu pseudokolumny, takiej jak SYSDATE lub USER

Tabela ma jedną kolumnę VARCHAR2 (1) o nazwie DUMMY, która ma wartość „X”

Możesz przeczytać o tym wszystko na http://en.wikipedia.org/wiki/DUAL_table


1

DUAL jest niezbędny w rozwoju PL / SQL do używania funkcji, które są dostępne tylko w SQL

na przykład

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

0

Jest to obiekt do wstawienia z tego zwrotu 1 pusty wiersz. Na przykład: wybierz 1 z podwójnego; zwraca 1

wybierz 21 + 44 z podwójnego; zwraca 65

wybierz [sekwencję] .nextval z podwójnego; zwraca następną wartość z sekwencji.


0

DUAL używaliśmy głównie do uzyskiwania kolejnej liczby z sekwencji.

Składnia: SELECT 'nazwa_sekwencyjna'. NEXTVAL OD DUAL

Zwróci wartość jednego wiersza i jednej kolumny (nazwa kolumny NEXTVAL).


1
To nie jest konieczne, ponieważ 11g. Sekwencje mogą być używane natywnie w PL / SQL.
Jon Heller

0

Inną sytuacją, która wymaga, select ... from dual jest to, kiedy chcemy pobrać kod (definicję danych) dla różnych obiektów bazy danych (takich jak TABELA, FUNKCJA, TRIGGER, PAKIET), używając wbudowanej DBMS_METADATA.GET_DDLfunkcji:

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

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

jest prawdą, że obecnie IDE oferują możliwość przeglądania DDL tabeli, ale w prostszych środowiskach, takich jak SQL Plus, może to być naprawdę przydatne.

EDYTOWAĆ

bardziej ogólna sytuacja: w zasadzie, kiedy musimy użyć dowolnej procedury PL / SQL w standardowej instrukcji SQL lub gdy chcemy wywołać procedurę z wiersza poleceń:

select my_function(<input_params>) from dual;

oba przepisy pochodzą z książki „Oracle PL / SQL Recipes” autorstwa Josha Juneau i Matt Areny


0

DUAL to specjalny jeden wiersz, jedna tabela kolumnowa domyślnie obecna we wszystkich bazach danych Oracle. Właścicielem DUAL jest SYS.

DUAL to tabela tworzona automatycznie przez Oracle Database wraz z funkcjami danych. Jest zawsze używany do uzyskania funkcji systemu operacyjnego (takich jak data, godzina, wyrażenie arytmetyczne. Itp.)

SELECT SYSDATE from dual;  
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.