Słyszałem ludzi odnoszących się do tego stołu i nie byłem pewien, o co chodzi.
Słyszałem ludzi odnoszących się do tego stołu i nie byłem pewien, o co chodzi.
Odpowiedzi:
Jest to rodzaj fałszywej tabeli z pojedynczym rekordem służącym do wybierania, kiedy nie jesteś zainteresowany danymi, ale zamiast tego chcesz wyniki funkcji systemowej w instrukcji select:
na przykład select sysdate from dual;
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.
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”
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.
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
Więcej faktów na temat DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Ekscytujące eksperymenty wykonane tutaj i więcej ekscytujących wyjaśnień Toma
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
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.
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).
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_DDL
funkcji:
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
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;