PostgreSQL Finns med Välj, Infoga, Uppdatera & Ta bort Exempel
Vad finns i PostgreSQL?
Ocuco-landskapet PostgreSQL EXISTS operatorn testar om en rad(er) finns i en underfråga. Detta innebär att operatorn används tillsammans med en underfråga. Operatorn Exists sägs ha uppfyllts när minst en rad hittas i underfrågan. Du kan använda denna operation tillsammans med SELECT-, UPDATE-, INSERT- och DELETE-satser.
Postgres existerar frågesyntax
Här är syntaxen för PostgreSQL EXISTS uttalande:
WHERE EXISTS (subquery);
Ovanstående syntax visar att operatorn EXISTS tar in ett argument, som är en underfråga. Underfrågan är helt enkelt en SELECT-sats som bör börja med en SELECT * istället för en lista med kolumnnamn eller uttryck.
PostgreSQL Finns med SELECT Statement
Låt oss se hur man använder en SELECT-sats med operatorn EXISTS. Vi har följande tabeller:
Bok:
Pris:
Kör följande uttalande:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Detta returnerar följande:
Ovanstående kommando bör returnera alla poster i boktabellen vars id matchar id:t för alla poster av underfrågan. Endast ett id matchades. Därför returnerades endast en post.
PostgreSQL Finns med INSERT-sats
Vi kan använda operatorn EXISTS i en INSERT-sats. Vi har följande 3 tabeller:
Bok:
Pris:
Pris2:
Vi kan sedan köra följande uttalande:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Pristabellen är nu som följer:
Raden med id 5 i tabellen med namnet Price2 matchades. Denna post infogades sedan i pristabellen.
Postgres finns med UPPDATERING
Vi kan använda operatorn EXISTS i en UPDATE-sats.
Kör följande fråga:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Vi uppdaterar priskolumnen i pristabellen. Vårt mål är att priserna på varor som delar ett id ska vara desamma. Endast en rad matchades, det vill säga 5.
Men eftersom priserna är lika, det vill säga 205, gjordes ingen uppdatering. Om det funnits någon skillnad hade en uppdatering gjorts.
Postgres finns med DELETE-deklaration
A PostgreSQL DELETE-satsen kan använda operatorn EXISTS. Här är ett exempel:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Pristabellen är nu som följer:
Raden med id 5 har tagits bort.
PostgreSQL Finns påstående med pgAdmin
Låt oss nu se hur dessa åtgärder kan utföras med pgAdmin:
Hur man använder Exists Query i PostgreSQL med SELECT Statement med pgAdmin
Nedan följer stegen för att använda Exists-frågan i PostgreSQL med SELECT-sats med pgAdmin:
Steg 1) Logga in på ditt pgAdmin-konto
Öppna pgAdmin och logga in på ditt konto med dina referenser
Steg 2) Skapa en demodatabas
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv frågan
Skriv in frågan nedan i frågeredigeraren:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Steg 4) Kör frågan
Klicka på knappen Kör
Det bör returnera följande:
Med INSERT uttalande
För att åstadkomma samma sak genom pgAdmin, gör så här:
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv in frågan i frågeredigeraren:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Steg 4) Klicka på knappen Kör.
Pristabellen bör nu vara följande:
Med UPPDATERING
För att åstadkomma samma sak genom pgAdmin, gör så här:
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv in frågan i frågeredigeraren:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Steg 4) Klicka på knappen Kör.
Pristabellen bör nu vara följande:
Med DELETE Statement
För att åstadkomma samma sak genom pgAdmin, gör så här:
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv in frågan i frågeredigeraren:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Steg 4) Klicka på knappen Kör.
Pristabellen bör nu vara följande:
Sammanfattning
- Operatören EXISTS testar om en rad(er) finns i en underfråga.
- Den används med en underfråga och sägs ha uppfyllts när underfrågan returnerar minst en rad.
- Den används tillsammans med SELECT-, UPDATE-, INSERT- och DELETE-satser.
Ladda ner den databas som används i denna handledning