Ich habe Leute gehört, die sich auf diese Tabelle bezogen, und war mir nicht sicher, worum es ging.
Ich habe Leute gehört, die sich auf diese Tabelle bezogen, und war mir nicht sicher, worum es ging.
Antworten:
Es handelt sich um eine Art Dummy-Tabelle mit einem einzelnen Datensatz, der zur Auswahl verwendet wird, wenn Sie nicht wirklich an den Daten interessiert sind, sondern die Ergebnisse einer Systemfunktion in einer select-Anweisung anzeigen möchten:
z.B select sysdate from dual;
Aus Wikipedia
Geschichte
Die DUAL-Tabelle wurde von Chuck Weiss von der Oracle Corporation erstellt, um eine Tabelle zum Verknüpfen interner Ansichten bereitzustellen:
Ich habe die DUAL-Tabelle als zugrunde liegendes Objekt im Oracle Data Dictionary erstellt. Es sollte nie selbst gesehen werden, sondern in einer Ansicht verwendet werden, die abgefragt werden sollte. Die Idee war, dass Sie der DUAL-Tabelle JOIN hinzufügen und für jede Zeile in Ihrer Tabelle zwei Zeilen im Ergebnis erstellen können. Dann könnte unter Verwendung von GROUP BY der resultierende Join zusammengefasst werden, um die Speichermenge für den DATA-Bereich und für den INDEX-Bereich (die INDEX-Bereiche) anzuzeigen. Der Name DUAL schien für den Prozess geeignet zu sein, ein Zeilenpaar aus nur einer zu erstellen. 1
Aus dem Obigen ist dies möglicherweise nicht ersichtlich, aber die ursprüngliche DUAL-Tabelle enthielt zwei Zeilen (daher der Name). Heutzutage hat es nur eine Reihe.
Optimierung
DUAL war ursprünglich eine Tabelle, und das Datenbankmodul führte bei der Auswahl von DUAL Festplatten-E / A für die Tabelle aus. Diese Festplatten-E / A war normalerweise eine logische E / A (ohne physischen Festplattenzugriff), da die Festplattenblöcke normalerweise bereits im Speicher zwischengespeichert waren. Dies führte zu einer großen Menge logischer E / A für die DUAL-Tabelle.
Spätere Versionen der Oracle-Datenbank wurden optimiert und die Datenbank führt keine physischen oder logischen E / A mehr für die DUAL-Tabelle aus, obwohl die DUAL-Tabelle tatsächlich noch vorhanden ist.
Ich denke, dieser Wikipedia-Artikel kann helfen, dies zu klären.
http://en.wikipedia.org/wiki/DUAL_table
Die DUAL-Tabelle ist eine spezielle einzeilige Tabelle, die standardmäßig in allen Oracle-Datenbankinstallationen vorhanden ist. Es eignet sich zur Auswahl einer Pseudospalte wie SYSDATE oder USER. Die Tabelle enthält eine einzelne VARCHAR2 (1) -Spalte namens DUMMY mit dem Wert "X".
Eine Art Pseudotabelle, für die Sie Befehle ausführen und Ergebnisse wie sysdate zurückerhalten können. Hilft Ihnen auch zu überprüfen, ob Oracle aktiv ist, und die SQL-Syntax usw. zu überprüfen.
Eine Utility-Tabelle in Oracle mit nur 1 Zeile und 1 Spalte. Es wird verwendet, um eine Reihe von arithmetischen Operationen auszuführen, und kann allgemein verwendet werden, wenn eine bekannte Ausgabe erzeugt werden muss.
SELECT * FROM dual;
gibt eine einzelne Zeile mit einer einzelnen Spalte mit dem Namen "DUMMY" und dem Wert "X" an, wie hier gezeigt:
DUMMY ----- X
Weitere Fakten zum DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Hier werden spannende Experimente und spannendere Erklärungen von Tom durchgeführt
Die DUAL-Tabelle ist eine spezielle einzeilige Tabelle, die standardmäßig in allen Oracle-Datenbankinstallationen vorhanden ist. Es eignet sich zur Auswahl einer Pseudospalte wie SYSDATE oder USER
Die Tabelle enthält eine einzelne VARCHAR2 (1) -Spalte namens DUMMY mit dem Wert "X".
Sie können alles darüber unter http://en.wikipedia.org/wiki/DUAL_table lesen
Es ist ein Objekt, das von dieser Rückgabe 1 leere Zeile eingefügt werden soll. Zum Beispiel: Wählen Sie 1 aus Dual; gibt 1 zurück
Wählen Sie 21 + 44 aus Dual. gibt 65 zurück
Wählen Sie [Sequenz] .nextval aus dual; Gibt den nächsten Wert aus der Sequenz zurück.
DUAL haben wir hauptsächlich verwendet, um die nächste Nummer aus den Sequenzen zu erhalten.
Syntax: SELECT 'sequence_name'.NEXTVAL FROM DUAL
Dies gibt den Wert für eine Zeile und eine Spalte zurück (NEXTVAL-Spaltenname).
Eine andere Situation, die dies erfordert, select ... from dual
ist, wenn wir den Code (Datendefinition) für verschiedene Datenbankobjekte (wie TABELLE, FUNKTION, TRIGGER, PAKET) mit der integrierten DBMS_METADATA.GET_DDL
Funktion abrufen möchten :
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
In der Tat bieten die IDEs heutzutage die Möglichkeit, die DDL einer Tabelle anzuzeigen, aber in einfacheren Umgebungen wie SQL Plus kann dies sehr praktisch sein.
BEARBEITEN
Eine allgemeinere Situation: Grundsätzlich, wenn wir eine PL / SQL-Prozedur in einer Standard-SQL-Anweisung verwenden müssen oder wenn wir eine Prozedur über die Befehlszeile aufrufen möchten:
select my_function(<input_params>) from dual;
Beide Rezepte stammen aus dem Buch 'Oracle PL / SQL Recipes' von Josh Juneau und Matt Arena
Das DUAL ist eine spezielle Tabelle mit einer Zeile und einer Spalte, die standardmäßig in allen Oracle-Datenbanken vorhanden ist. Der Eigentümer von DUAL ist SYS.
DUAL ist eine Tabelle, die von Oracle Database zusammen mit den Datenfunktionen automatisch erstellt wird. Es wird immer verwendet, um die Funktionen des Betriebssystems abzurufen (wie Datum, Uhrzeit, arithmetischer Ausdruck usw.).
SELECT SYSDATE from dual;