Wählen Sie From Dual in PostgreSQL aus

Bilal Shahid 15 Februar 2024
  1. Übersicht dual Tisch
  2. Einführung in den dualen Tisch
  3. Bedeutung der dual-Tabelle in PostgreSQL
  4. Erstellen Sie eine duale Tabelle in PostgreSQL
Wählen Sie From Dual in PostgreSQL aus

Das heutige Tutorial informiert über die dual-Tabelle, ihre Bedeutung in PostgreSQL und wie wir in PostgreSQL aus dual auswählen können.

Übersicht dual Tisch

In Datenbanksystemen müssen wir manchmal einige Abfragen verwenden, um Daten auszuwählen, die nicht in einer Tabelle vorhanden sind. Beispielsweise können wir die folgende Abfrage ausführen, um das aktuelle Datum und die aktuelle Uhrzeit abzurufen:

select now();

wählen Sie aus dual in postgresql - geben Sie eins aus

Diese Abfrage verwendet die Anweisung SELECT ohne das Schlüsselwort FROM, da sie die Daten aus keiner Tabelle auswählt. Diese Auswahl einer Pseudospalte ist eine gültige Möglichkeit in PostgreSQL.

Einige Datenbankverwaltungssysteme wie Oracle lassen diese Syntax jedoch nicht zu. Stattdessen verlangen sie, dass es eine FROM-Klausel in der SELECT-Anweisung geben muss.

Was machen wir also in Oracle, wenn wir grundlegende Anweisungen wie die obige ausführen? Wir verwenden die dual-Tabelle.

Einführung in den dualen Tisch

Die dual-Tabelle ist eine Dummy-Tabelle in Oracle, die verwendet wird, um dem oben beschriebenen Problem zu begegnen.

Es hat nur eine Zeile und eine Spalte mit dem Spaltennamen dummy und einem Wert von x, der in der Zeile gespeichert ist, die vom Datentyp VARCHAR2(1) ist.

Schauen wir uns die dual-Tabelle in Oracle an. Angenommen, wir möchten eine einfache Berechnung in SQL durchführen. Wir können es auf folgende Weise tun:

select 2*2;

Wenn Sie diese Abfrage jedoch auf Oracle ausführen, erhalten Sie eine Fehlermeldung mit der Aufschrift ORA-00923: FROM-Schlüsselwort nicht gefunden, wo erwartet. Dies liegt daran, dass wir in Oracle die Klausel FROM und die Tabelle in der Anweisung SELECT angeben müssen.

Daher führen wir die folgende Abfrage aus, um dem Fehler entgegenzuwirken:

select 2*2 as result from dual;

Es beseitigt den Fehler, da dual als Dummy-Tabelle verwendet wird.

In PostgreSQL gibt es keine Einschränkung, die FROM-Klausel unbedingt in die SELECT-Anweisung aufzunehmen. Daher können wir die folgende Anweisung ohne Fehler ausführen:

select 2*2 as result;

select from dual in postgresql - output two

Warum müssen wir also nach Alternativen zur dual-Tabelle in PostgreSQL suchen? Diese Frage wird im Folgenden beantwortet.

Bedeutung der dual-Tabelle in PostgreSQL

Auch wenn PostgreSQL allein die dual-Tabelle nicht benötigt, können bei der Portierung einer Datenbank von PostgreSQL nach Oracle oder umgekehrt Probleme auftreten.

Eine Organisation möchte möglicherweise ihre Datenbank aufgrund von Skalierbarkeitsproblemen und Modernisierung von einem Datenbankverwaltungssystem zu einem anderen migrieren. Zu diesem Zweck müssen wir jedoch auch die Kompatibilität beider Plattformen berücksichtigen.

Ein Kompatibilitätsproblem ist die dual-Tabelle, die in Oracle, aber nicht in PostgreSQL vorhanden ist. Wenn Code von einer Plattform auf eine andere migriert wird, werden daher garantiert Fehler produziert.

Der folgende Code läuft beispielsweise perfekt auf Oracle, führt aber zu einem Fehler in PostgreSQL:

select 2*2 as result from dual;

wählen Sie aus dual in postgresql - geben Sie drei aus

Dies liegt daran, dass PostgreSQL das Weglassen des Schlüsselworts FROM in der SELECT-Anweisung zulässt, sodass die dual-Tabelle dort nicht existiert. Daher erzeugt die Auswahl daraus einen Fehler.

Ebenso wird eine einfache select 2*2-Abfrage, die in PostgreSQL einwandfrei funktioniert, als fehlerhaft betrachtet, wenn sie in Oracle ausgeführt wird. Wie bereits erläutert, ist es in Oracle erforderlich, die FROM-Klausel in die SELECT-Anweisung aufzunehmen.

Um die Datenbankmigration zwischen diesen Plattformen kompatibel zu machen, müssen wir daher nach Alternativen in PostgreSQL suchen. Die Lösung ist jedoch einfach: Da wir in PostgreSQL keine duale Tabelle haben, können wir eine erstellen.

Erstellen Sie eine duale Tabelle in PostgreSQL

Ja, die Lösung für dieses Kompatibilitätsproblem ist so einfach wie das Erstellen einer dualen Tabelle in der PostgreSQL-Datenbank, genau wie die in Oracle. Wir können dies auf folgende Weise tun:

CREATE TABLE public.dual ( dummy varchar);

Wir haben eine Spalte namens dummy vom Datentyp varchar eingefügt. Wir werden sie nun ebenfalls mit einem Dummy-Wert füllen, ähnlich der dual-Tabelle in Oracle:

insert into dual values ('X');

Lassen Sie uns testen, ob dies funktioniert, indem Sie die folgende Abfrage ausführen, die uns zuvor einen Fehler in PostgreSQL gab:

select 2*2 as result from dual;

select from dual in postgresql - output two

Es funktioniert jetzt! Es entfernt die Auswahl aus dem dualen Kompatibilitätsproblem zwischen PostgreSQL und Oracle.

Alternativ können wir in PostgreSQL statt einer Tabelle auch eine dual-Ansicht erstellen. Dies geschieht auf folgende Weise:

CREATE VIEW public.dual AS 
SELECT 'X'::varchar AS dummy;

Hier wählen wir in der Definition der dual-Ansicht eine Dummy-Variable varchar aus, genau wie die, die wir in der dual-Tabelle in Oracle haben. Lassen Sie uns sehen, ob dies funktioniert, indem Sie diese Abfrage erneut ausführen:

select 2*2 as result from dual;

select from dual in postgresql - output two

Wie erwartet funktioniert das auch! Daher können wir in PostgreSQL entweder eine Tabelle oder eine Ansicht erstellen, die genauso funktioniert wie die duale Tabelle in Oracle.

Schauen wir uns andere Beispiele für die Auswahl von Pseudospalten mit einer dual-Tabelle in PostgreSQL an, um zu sehen, ob es in allen Fällen funktioniert.

Im folgenden Beispiel versuchen wir, das aktuelle Datum und die aktuelle Uhrzeit mit der folgenden Abfrage auszuwählen:

select now() from dual;

Es gibt die folgende Ausgabe:

wählen Sie aus dual in postgresql - geben Sie eins aus

Wir können den aktuellen Benutzer der Datenbank auch auf folgende Weise auswählen:

select user from dual;

Es gibt die folgende Ausgabe:

wählen Sie aus dual in postgresql - Ausgabe vier

Wir haben also besprochen, dass die dual-Tabelle in einigen Datenbankverwaltungssystemen wie Oracle benötigt wird, die die Angabe einer FROM-Klausel erfordern.

Um Kompatibilitätsproblemen entgegenzuwirken, haben wir gelernt, wie wir in PostgreSQL eine duale Dummy-Tabelle oder -Ansicht erstellen können. Wir hoffen, dass Sie diese Konzepte gründlich verstehen konnten. Lerne weiter!

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub