Was ist PostgreSQL existiert?
Der Operator EXISTS prüft, ob eine Zeile(n) in einer Unterabfrage vorhanden ist(sind). Dies bedeutet, dass der Operator zusammen mit einer Unterabfrage verwendet wird. Der Exists-Operator soll erfüllt sein, wenn mindestens eine Zeile in der Unterabfrage gefunden wird. Sie können diesen Vorgang zusammen mit SELECT-, UPDATE-, INSERT- und DELETE-Anweisungen verwenden.
In diesem PostgreSQL-Tutorial erfahren Sie Folgendes:
- Syntax
- Mit SELECT-Anweisung
- Mit INSERT-Anweisung
- Mit UPDATE-Anweisung
- Mit DELETE-Anweisung
- Mit pgAdmin
Syntax
Hier ist die Syntax für die PostgreSQL EXISTS-Anweisung:
WHERE EXISTS (subquery);
Die obige Syntax zeigt, dass der Operator EXISTS ein Argument akzeptiert, bei dem es sich um eine Unterabfrage handelt. Die Unterabfrage ist einfach eine SELECT-Anweisung, die mit einem SELECT * anstelle einer Liste von Spaltennamen oder Ausdrücken beginnen sollte.
Mit SELECT-Anweisung
Sehen wir, wie eine SELECT-Anweisung mit dem Operator EXISTS verwendet wird. Wir haben folgende Tabellen:
Buchen:
Preis:
Führen Sie die folgende Anweisung aus:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Dies gibt Folgendes zurück:
Der obige Befehl sollte alle Datensätze in der Buchtabelle zurückgeben, deren ID mit der ID aller Datensätze der Unterabfrage übereinstimmt. Es wurde nur eine ID abgeglichen. Daher wurde nur ein Datensatz zurückgegeben.
Mit INSERT-Anweisung
Wir können den Operator EXISTS in einer INSERT-Anweisung verwenden. Wir haben die folgenden 3 Tabellen:
Buchen:
Preis:
Preis2:
Wir können dann die folgende Anweisung ausführen:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Die Preistabelle ist jetzt wie folgt:
Die Zeile mit der ID 5 in der Tabelle Price2 wurde abgeglichen. Dieser Datensatz wurde dann in die Preistabelle eingefügt.
Mit UPDATE-Anweisung
Wir können den Operator EXISTS in einer UPDATE-Anweisung verwenden.
Führen Sie die folgende Abfrage aus:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Wir aktualisieren die Preisspalte der Preistabelle. Unser Ziel ist es, dass die Preise für Artikel, die eine ID teilen, gleich sind. Es wurde nur eine Zeile abgeglichen, dh 5.
Da die Preise jedoch gleich sind, dh 205, wurde keine Aktualisierung vorgenommen. Wenn es einen Unterschied gäbe, wäre ein Update gemacht worden.
Mit DELETE-Anweisung
Eine PostgreSQL DELETE-Anweisung kann den EXISTS-Operator verwenden. Hier ein Beispiel:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Die Preistabelle ist jetzt wie folgt:
Die Zeile mit der ID 5 wurde gelöscht.
Mit pgAdmin
Sehen wir uns nun an, wie diese Aktionen mit pgAdmin ausgeführt werden können.
Mit SELECT-Anweisung
Um dasselbe über pgAdmin zu erreichen, gehen Sie folgendermaßen vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste auf der linken Seite auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrage-Editor ein:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Es sollte Folgendes zurückgeben:
Mit der INSERT-Anweisung
Gehen Sie folgendermaßen vor, um dasselbe über pgAdmin zu erreichen:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste auf der linken Seite auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrage-Editor ein:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Die Preistabelle sollte nun wie folgt aussehen:
Mit der UPDATE-Anweisung
Gehen Sie folgendermaßen vor, um dasselbe über pgAdmin zu erreichen:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste auf der linken Seite auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrage-Editor ein:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Die Preistabelle sollte nun wie folgt aussehen:
Mit DELETE-Anweisung
Um dasselbe über pgAdmin zu erreichen, gehen Sie folgendermaßen vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste auf der linken Seite auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrage-Editor ein:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Schritt 4) Klicken Sie auf die Schaltfläche Ausführen.
Die Preistabelle sollte nun wie folgt aussehen:
Zusammenfassung
- Der Operator EXISTS prüft, ob eine Zeile(n) in einer Unterabfrage vorhanden ist(sind).
- Es wird mit einer Unterabfrage verwendet und gilt als erfüllt, wenn die Unterabfrage mindestens eine Zeile zurückgibt.
- Es wird zusammen mit SELECT-, UPDATE-, INSERT- und DELETE-Anweisungen verwendet.
Laden Sie die in diesem Tutorial verwendete Datenbank herunter