Co to jest Podwójna tabela w Oracle?
Słyszałem ludzi odnoszących się do tego stołu i nie byłem pewien, o co chodzi.
13 answers
Jest to rodzaj tabeli z pojedynczym rekordem używanym do wybierania, gdy dane nie są faktycznie zainteresowane, ale zamiast tego chcesz, aby wyniki jakiejś funkcji systemowej były zawarte w instrukcji select:
Np. select sysdate from dual;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-20 07:46:07
Jest to atrapa tabeli z jednym elementem w nim. Jest to przydatne, ponieważ Oracle nie pozwala na takie wypowiedzi jak
SELECT 3+4
Możesz obejść to ograniczenie pisząc
SELECT 3+4 FROM DUAL
Zamiast tego.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-20 07:45:48
Historia
Podwójna tabela została stworzona przez Chucka Weissa z Oracle corporation, aby zapewnić tabelę do łączenia w wewnętrznych widokach:
stworzyłem podwójną tabelę jako podstawowy obiekt w słowniku danych Oracle. Nigdy nie miał być sam widziany, ale zamiast tego używany wewnątrz widok, który miał być kwestionowany. Chodziło o to, że ty może wykonać połączenie z podwójną tabelą i utworzyć dwa wiersze w wyniku na każdy rząd w twoim stole. Następnie, używając GROUP BY, powstałe połączenie można podsumować, aby pokazać ilość miejsca na zakres danych oraz zakres (- y) indeksu. Nazwa, Podwójna, wydawała się apt do procesu tworzenia pary wierszy tylko z jednego. 1
Może nie jest to oczywiste z powyższego, ale oryginalna tabela dualna miała w sobie dwa wiersze (stąd jej nazwa). Obecnie ma tylko jeden rząd.
Optymalizacja
DUAL był pierwotnie tabela i silnik bazy danych wykonywałby dysk IO na stole przy wyborze Z DUAL. Ten dysk IO był zwykle logicznym IO (nie wymagającym fizycznego dostępu do dysku), ponieważ bloki dyskowe były zwykle już buforowane w pamięci. Wynikało to z dużej ilości logicznych IO w stosunku do podwójnej tabeli.
Późniejsze wersje bazy danych Oracle zostały zoptymalizowane i baza danych nie wykonuje już fizycznych ani logicznych IO na podwójnej tabeli, mimo że Podwójna tabela nadal istnieje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-08 15:10:02
Myślę, że ten artykuł Wikipedii może pomóc wyjaśnić.
Http://en.wikipedia.org/wiki/DUAL_table
Tabela dualna jest specjalnym jednorzędowym tabela obecna domyślnie we wszystkich Oracle instalacje baz danych. Jest odpowiedni do wykorzystania przy wyborze pseudokolumn takich jak SYSDATE czy USER tabela ma pojedyncza kolumna VARCHAR2 (1) o nazwie Manekin, który ma wartość " X "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 23:34:01
To specjalna tabela 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
wypisuje aktualną datę serwera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-23 20:12:09
Rodzaj pseudo tabeli, na której można uruchamiać polecenia i uzyskiwać wyniki, takie jak sysdate. Pomaga również sprawdzić, czy Oracle działa i sprawdzić składnię sql itp.
Tabela narzędzi w Oracle z tylko 1 wierszem i 1 kolumną. Jest on używany do wykonywania wielu operacji arytmetycznych i może być używany ogólnie tam, gdzie trzeba wygenerować znane wyjście.
SELECT * FROM dual;
Da pojedynczy wiersz, z pojedynczą kolumną o nazwie "DUMMY" i wartości "X", jak pokazano tutaj:
DUMMY ----- X
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 22:17:37
Więcej faktów o DUAL....
Http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Ekscytujące eksperymenty wykonane tutaj, i bardziej ekscytujące wyjaśnienia Tom
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-31 10:30:15
DUAL table jest specjalną, jednorzędową tabelą występującą domyślnie we wszystkich instalacjach bazodanowych Oracle. Jest odpowiedni do użycia przy wyborze pseudokolumn, takich jak SYSDATE lub USER
Tabela ma pojedynczą kolumnę VARCHAR2 (1) o nazwie DUMMY, która ma wartość "X"
Możesz przeczytać o tym w http://en.wikipedia.org/wiki/DUAL_table
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:48:44
DUAL jest niezbędny w rozwoju PL / SQL do korzystania z funkcji, które są dostępne tylko w SQL
Np.
DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:57:44
Jest to obiekt, który należy umieścić w od tego zwracanego 1 pustego wiersza. Na przykład: wybierz 1 z dwóch; zwraca 1
Wybierz 21+44 Z dual; zwraca 65
Wybierz [sekwencję].nextval od dual; zwraca następną wartość z sekwencji.
DUAL wykorzystywaliśmy głównie do uzyskania kolejnej liczby z sekwencji.
Składnia: wybierz 'sequence_name'.NEXTVAL FROM DUAL
Zwróci wartość jednego wiersza jednej kolumny (NEXTVAL nazwa kolumny).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 07:33:04
Inną sytuacją wymagającą select ... from dual
jest sytuacja, gdy chcemy pobrać kod (definicję danych) dla różnych obiektów bazy danych (takich jak tabela, funkcja, TRIGGER, pakiet), używając wbudowanej funkcji DBMS_METADATA.GET_DDL
:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
In 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.
EDIT
Bardziej ogólna sytuacja: zasadniczo, gdy musimy użyć dowolnego PL / SQL procedura wewnątrz standardowego polecenia SQL, lub gdy chcemy wywołać procedurę z linii poleceń:
select my_function(<input_params>) from dual;
Oba przepisy pochodzą z książki "przepisy Oracle PL/SQL" Josha Juneau i Matta Areny
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 16:22:18