PostgreSQL BESTAAT met voorbeelden

Inhoudsopgave:

Anonim

Wat is PostgreSQL?

De EXISTS-operator test of er een rij (en) bestaat in een subquery. Dit betekent dat de operator samen met een subquery wordt gebruikt. Er wordt gezegd dat aan de operator Exists is voldaan wanneer ten minste één rij wordt gevonden in de subquery. U kunt deze bewerking samen met SELECT-, UPDATE-, INSERT- en DELETE-instructies gebruiken.

In deze PostgreSQL-zelfstudie leert u het volgende:

  • Syntaxis
  • Met SELECT-instructie
  • Met INSERT-instructie
  • Met UPDATE-verklaring
  • Met DELETE-instructie
  • Met pgAdmin

Syntaxis

Hier is de syntaxis voor de PostgreSQL EXISTS-instructie:

WHERE EXISTS (subquery);

De bovenstaande syntaxis laat zien dat de EXISTS-operator een argument opneemt, wat een subquery is. De subquery is gewoon een SELECT-instructie die moet beginnen met een SELECT * in plaats van een lijst met kolomnamen of expressies.

Met SELECT-instructie

Laten we eens kijken hoe u een SELECT-instructie gebruikt met de EXISTS-operator. We hebben de volgende tabellen:

Boek:

Prijs:

Voer de volgende instructie uit:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Dit levert het volgende op:

De bovenstaande opdracht moet alle records in de Book-tabel retourneren waarvan de id overeenkomt met de id van alle records door de subquery. Er kwam slechts één ID overeen. Daarom werd slechts één record geretourneerd.

Met INSERT-instructie

We kunnen de EXISTS-operator gebruiken in een INSERT-instructie. We hebben de volgende 3 tabellen:

Boek:

Prijs:

Prijs2:

We kunnen dan de volgende verklaring uitvoeren:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

De prijzentabel is nu als volgt:

De rij met een id van 5 in de tabel met de naam Prijs2 kwam overeen. Dit record werd vervolgens in de prijstabel ingevoegd.

Met UPDATE-verklaring

We kunnen de EXISTS-operator gebruiken in een UPDATE-instructie.

Voer de volgende query uit:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);

We werken de prijskolom van de prijstabel bij. Ons doel is om ervoor te zorgen dat de prijzen van items met een ID hetzelfde zijn. Er is slechts één rij gekoppeld, dat wil zeggen 5.

Omdat de prijzen echter gelijk zijn, dat wil zeggen 205, is er geen update uitgevoerd. Als er een verschil was, zou er een update zijn gemaakt.

Met DELETE-instructie

Een PostgreSQL DELETE-instructie kan de EXISTS-operator gebruiken. Hier is een voorbeeld:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);

De prijzentabel is nu als volgt:

De rij met id 5 is verwijderd.

Met pgAdmin

Laten we nu eens kijken hoe deze acties kunnen worden uitgevoerd met pgAdmin.

Met SELECT-instructie

Om hetzelfde te bereiken met pgAdmin, doe je dit:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Stap 3) Typ de vraag in de zoekopdrachteditor:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Stap 4) Klik op de knop Uitvoeren.

Het zou het volgende moeten retourneren:

Met INSERT-instructie

Om hetzelfde te bereiken met pgAdmin, doe je dit:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Stap 3) Typ de vraag in de zoekopdrachteditor:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

Stap 4) Klik op de knop Uitvoeren.

De prijzentabel zou nu als volgt moeten zijn:

Met UPDATE-verklaring

Om hetzelfde te bereiken met pgAdmin, doe je dit:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Stap 3) Typ de vraag in de zoekopdrachteditor:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);

Stap 4) Klik op de knop Uitvoeren.

De prijzentabel zou nu als volgt moeten zijn:

Met DELETE-instructie

Om hetzelfde te bereiken met pgAdmin, doe je dit:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op Demo.

Stap 3) Typ de vraag in de zoekopdrachteditor:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);

Stap 4) Klik op de knop Uitvoeren.

De prijzentabel zou nu als volgt moeten zijn:

Overzicht

  • De EXISTS-operator test of er een rij (en) bestaat in een subquery.
  • Het wordt gebruikt met een subquery en er wordt gezegd dat er aan is voldaan wanneer de subquery ten minste één rij retourneert.
  • Het wordt samen met SELECT-, UPDATE-, INSERT- en DELETE-instructies gebruikt.

Download de database die in deze zelfstudie wordt gebruikt