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.

Author: LittleBobbyTables, 2008-09-16

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;

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

 200
Author: Sean McMains,
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.
 63
Author: mfx,
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

Z Wikipedii

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.

 60
Author: Ivan Bosnic,
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 "

 20
Author: Jorge Ferreira,
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.
 9
Author: Martin08,
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.

 4
Author: ,
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:45:01

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
 4
Author: AB01,
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

 3
Author: Venkataramesh Kommoju,
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

 2
Author: Sakin,
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;
 1
Author: steevc,
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.

 0
Author: ,
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:47:54

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).

 0
Author: Vishwa G,
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

 0
Author: Newton fan 01,
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