PostgreSQL Ta bort fråga (Ta bort rader från Select)

Ta bort fråga in PostgreSQL

Ocuco-landskapet Ta bort uttalande in PostgreSQL används för att radera antingen en eller flera poster från en tabell. Om du vill ta bort välj rader från en tabell PostgreSQL låter dig kombinera DELETE-satsen med WHERE-satsen annars kommer det att radera alla poster.

Postgres Ta bort frågesyntax

DELETE-satsen kan definieras av nedanstående syntax:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

parametrar

  • med-förfrågan: WITH-satsen tillåter oss att referera till en eller flera underfrågor som ska refereras med namn i DELETE-frågan.
  • tabell-namn: namnet på tabellen från vilken poster ska raderas.
  • alias: detta är en ersättning för namnet på måltabellen.
  • use-list: tabelluttryck för att tillåta kolumner från andra tabeller att användas i WHERE-satsen.
  • betingelser): frivillig. Det är villkoren som måste vara uppfyllda för att poster ska raderas. Om detta avsnitt inte tillhandahålls kommer alla tabellnamnsposter att raderas.
  • markörnamn: markören som ska användas i läget WHERE CURRENT OF. Den senast hämtade raden av den här markören kommer att raderas.
  • output-uttryck: uttrycket som ska behandlas och returneras av DELETE-satsen efter raderingen av varje rad.
  • output-namn: namnet som ska användas för den returnerade kolumnen.

Observera att eftersom DELETE-satsen tar bort hela raden behöver du inte ange kolumnnamnen.

PostgreSQL Ta bort fråga med ett villkor

DELETE-satsen kan användas med ett enda villkor. Villkoret ställs in med hjälp av WHERE-satsen. Betrakta pristabellen med följande data:

Pris

PostgreSQL Ta bort fråga med ett villkor

Låt oss ta bort posten med id 4:

DELETE FROM Price
WHERE id = 4;

Kommandot ovan kommer att radera posterna där id är 4. Låt oss bekräfta om raderingen lyckades:

PostgreSQL Ta bort fråga med ett villkor

Raden med id 4 har tagits bort.

Ta bort fråga med två villkor

Ocuco-landskapet PostgreSQL DELETE-satsen kan ha två villkor. De två villkoren ska förenas med AND-operatorn. Vi kommer att använda följande tabell:

Pris:

PostgreSQL Ta bort fråga med två villkor

Tänk på exemplet nedan:

DELETE FROM Price
WHERE id = 3Y
AND price = 300;

I kommandot ovan tar vi bort raden där id är 3 och priset är 300. Vi kan nu fråga tabellen:

SELECT * FROM Price

Detta returnerar följande:

PostgreSQL Ta bort fråga med två villkor

Posten med id 3 och pris 300 raderades.

PostgreSQL Ta bort fråga med existerande villkor

Med EXISTS-villkoret kan du göra DELETE mer komplex. Ibland kan det finnas behov av att ta bort poster i en tabell baserat på poster i en annan tabell.

Du kommer att se att FROM-satsen inte tillåter dig att lista poster från mer än en tabell när du utför radering, EXISTS-satsen blir mycket användbar. Vi har följande två tabeller:

Bok:

PostgreSQL Ta bort fråga med existerande villkor

Pris:

PostgreSQL Ta bort fråga med existerande villkor

Vi kan sedan köra följande fråga:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Ovanstående kommando kommer att radera från boktabellen där det finns en post i pristabellen med ett id som matchar boktabellen och priset är mindre än 250.

Boktabellen ser nu ut som följer:

PostgreSQL Ta bort fråga med existerande villkor

Posten med id 1 raderades.

Hur man tar bort rad i PostgreSQL med pgAdmin

Följande är stegen för att ta bort en rad i PostgreSQL använder pgAdmin:

Med ett villkor

För att åstadkomma samma sak genom pgAdmin, gör så här:

Steg 1) Logga in på ditt pgAdmin-konto

Öppna pgAdmin och logga in på ditt konto med dina referenser

Steg 2) Skapa en demodatabas

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

Ta bort rad in PostgreSQL

Steg 3) Skriv frågan

Skriv in frågan nedan i frågeredigeraren:

DELETE FROM Price
WHERE id = 4;

Steg 4) Kör frågan

Klicka på knappen Kör

Ta bort rad in PostgreSQL

Steg 5) Kontrollera om raden är raderad

Låt oss kontrollera om raderingen lyckades:

Ta bort rad in PostgreSQL

Med två villkor

För att åstadkomma samma sak genom pgAdmin, gör så här:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

Ta bort rad in PostgreSQL

Steg 3) Skriv in frågan i frågeredigeraren:

DELETE FROM Price
WHERE id = 3
AND price = 300;

Steg 4) Klicka på knappen Kör.

Ta bort rad in PostgreSQL

Steg 5) Låt oss kontrollera om raderingen lyckades:

Ta bort rad in PostgreSQL

Använder EXISTS Condition

För att åstadkomma samma sak genom pgAdmin, gör så här:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

Ta bort rad med EXISTS-villkor

Steg 3) Skriv in frågan i frågeredigeraren:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Steg 4) Klicka på knappen Kör.

Ta bort rad med EXISTS-villkor

Steg 5) Låt oss kontrollera om raderingen lyckades:

Ta bort rad med EXISTS-villkor

Sammanfattning

  • DELETE-satsen används för att ta bort en eller flera poster från en tabell.
  • För att bara ta bort markerade rader från en tabell kan du kombinera DELETE-satsen med WHERE-satsen.
  • Om DELETE-satsen används utan WHERE-satsen raderar den alla poster från tabellen.
  • parametern table-name låter dig lägga till namnet på tabellen från vilken poster ska raderas.
  • Vi kan använda DELETE-satsen med ett villkor, specificerat med hjälp av WHERE-satsen.
  • DELETE-satsen kan också användas med två villkor som anges i WHERE-satsen. De två villkoren ska förenas med AND-operatorn.
  • Ocuco-landskapet EXISTS condition kan hjälpa oss att ta bort poster från en tabell baserat på posterna i en annan tabell.

Ladda ner den databas som används i denna handledning

Dagligt Guru99-nyhetsbrev

Kickstarta dagen med de senaste och viktigaste AI-nyheterna som levereras just nu.