Was ist die duale Tabelle in Oracle?


229

Ich habe Leute gehört, die sich auf diese Tabelle bezogen, und war mir nicht sicher, worum es ging.



Die beste Antwort ist hier alles über dual asktom.oracle.com/pls/asktom/… , die Leute schenken dem obigen Kommentar-Link keine größere Aufmerksamkeit, deshalb kommentiere ich hier .. schau es dir an, du wirst es nicht bereuen
Varun

Antworten:


228

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;

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


79

Es ist eine Dummy-Tabelle mit einem Element. Dies ist nützlich, da Oracle keine Anweisungen wie zulässt

 SELECT 3+4

Sie können diese Einschränkung umgehen, indem Sie schreiben

 SELECT 3+4 FROM DUAL

stattdessen.


70

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.


21

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


10

Es ist die spezielle Tabelle in Oracle. Ich benutze es oft für Berechnungen oder zur Überprüfung von Systemvariablen. Beispielsweise:

  • Select 2*4 from dual druckt das Ergebnis der Berechnung aus
  • Select sysdate from dual druckt das aktuelle Datum des Servers.

4

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.


4

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


2

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


1

DUAL ist in der PL / SQL-Entwicklung erforderlich, um Funktionen zu verwenden, die nur in SQL verfügbar sind

z.B

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

0

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.


0

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


1
Das ist seit 11g nicht mehr nötig. Sequenzen können nativ in PL / SQL verwendet werden.
Jon Heller

0

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_DDLFunktion 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


0

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;  
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.