PostgreSQL Smazat dotaz (smazat řádky z výběru)

Smazat dotaz v PostgreSQL

Jedno Smazat výpis in PostgreSQL se používá k odstranění jednoho nebo více záznamů z tabulky. Pokud chcete odstranit vybrané řádky z tabulky PostgreSQL umožňuje zkombinovat příkaz DELETE s klauzulí WHERE, jinak smaže všechny záznamy.

Syntaxe dotazu Postgres Delete

Příkaz DELETE lze definovat pomocí níže uvedené syntaxe:

[ 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] [, ...] ]

parametry

  • s dotazem: klauzule WITH nám umožňuje odkazovat na jeden nebo více poddotazů, na které se má odkazovat jménem v dotazu DELETE.
  • název-tabulky: název tabulky, ze které mají být záznamy vymazány.
  • přezdívka: toto je náhrada za název cílové tabulky.
  • using-list: tabulkové výrazy umožňující použití sloupců z jiných tabulek v klauzuli WHERE.
  • podmínky): volitelný. Jsou to podmínky, které musí být splněny, aby byly záznamy vymazány. Pokud tato sekce není uvedena, budou všechny záznamy názvů tabulky odstraněny.
  • jméno kurzoru: kurzor, který se má použít ve stavu WHERE CURRENT OF. Poslední řádek načtený tímto kurzorem bude smazán.
  • výstupní-výraz: výraz, který má být zpracován a vrácen příkazem DELETE po smazání každého řádku.
  • název-výstupu: název, který se má použít pro vrácený sloupec.

Všimněte si, že protože příkaz DELETE odstraní celý řádek, nemusíte zadávat názvy sloupců.

PostgreSQL Smazat dotaz s jednou podmínkou

Příkaz DELETE lze použít s jedinou podmínkou. Podmínka se nastavuje pomocí klauzule WHERE. Zvažte cenovou tabulku s následujícími údaji:

Cena

PostgreSQL Smazat dotaz s jednou podmínkou

Smažeme záznam s ID 4:

DELETE FROM Price
WHERE id = 4;

Výše uvedený příkaz smaže záznamy, ve kterých je id 4. Potvrďte, zda bylo smazání úspěšné:

PostgreSQL Smazat dotaz s jednou podmínkou

Řádek s ID 4 byl smazán.

Odstranit dotaz se dvěma podmínkami

Jedno PostgreSQL Příkaz DELETE může mít dvě podmínky. Tyto dvě podmínky by měly být spojeny pomocí operátoru AND. Použijeme následující tabulku:

Cena:

PostgreSQL Odstranit dotaz se dvěma podmínkami

Zvažte příklad uvedený níže:

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

Ve výše uvedeném příkazu odstraňujeme řádek, ve kterém je id 3 a cena je 300. Nyní můžeme dotazovat tabulku:

SELECT * FROM Price

To vrátí následující:

PostgreSQL Odstranit dotaz se dvěma podmínkami

Záznam s ID 3 a cenou 300 byl smazán.

PostgreSQL Odstranit dotaz pomocí existující podmínky

S podmínkou EXISTS můžete provést DELETE složitější. Někdy může být potřeba odstranit záznamy v jedné tabulce na základě záznamů v jiné tabulce.

Uvidíte, že klauzule FROM vám při provádění mazání neumožňuje vypsat záznamy z více než jedné tabulky, klauzule EXISTS se stává velmi užitečnou. Máme následující dvě tabulky:

Rezervovat:

PostgreSQL Odstranit dotaz pomocí existující podmínky

Cena:

PostgreSQL Odstranit dotaz pomocí existující podmínky

Poté můžeme spustit následující dotaz:

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

Výše uvedený příkaz odstraní z tabulky Kniha, kde existuje záznam v tabulce Cena s ID odpovídajícím id tabulky Kniha a cenou nižší než 250.

Tabulka knih je nyní následující:

PostgreSQL Odstranit dotaz pomocí existující podmínky

Záznam s ID 1 byl smazán.

Jak smazat řádek v PostgreSQL pomocí pgAdmin

Níže jsou uvedeny kroky k odstranění řádku PostgreSQL pomocí pgAdmin:

S jednou podmínkou

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin

Otevřete pgAdmin a přihlaste se ke svému účtu pomocí svých přihlašovacích údajů

Krok 2) Vytvořte demo databázi

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

Smazat řádek v PostgreSQL

Krok 3) Zadejte dotaz

Do editoru dotazů zadejte níže uvedený dotaz:

DELETE FROM Price
WHERE id = 4;

Krok 4) Proveďte dotaz

Klepněte na tlačítko Spustit

Smazat řádek v PostgreSQL

Krok 5) Zkontrolujte, zda je řádek smazán

Zkontrolujeme, zda bylo smazání úspěšné:

Smazat řádek v PostgreSQL

Se dvěma podmínkami

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

Smazat řádek v PostgreSQL

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

Smazat řádek v PostgreSQL

Krok 5) Zkontrolujeme, zda bylo smazání úspěšné:

Smazat řádek v PostgreSQL

Pomocí podmínky EXISTS

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

Smazat řádek pomocí EXISTS podmínky

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

Smazat řádek pomocí EXISTS podmínky

Krok 5) Zkontrolujeme, zda bylo smazání úspěšné:

Smazat řádek pomocí EXISTS podmínky

Shrnutí

  • Příkaz DELETE se používá k odstranění jednoho nebo více záznamů z tabulky.
  • Chcete-li z tabulky odstranit pouze vybrané řádky, můžete zkombinovat příkaz DELETE s klauzulí WHERE.
  • Pokud je klauzule DELETE použita bez klauzule WHERE, odstraní všechny záznamy z tabulky.
  • Parametr název-tabulky umožňuje přidat název tabulky, ze které mají být záznamy vymazány.
  • Příkaz DELETE můžeme použít s jednou podmínkou, specifikovanou pomocí klauzule WHERE.
  • Příkaz DELETE lze také použít se dvěma podmínkami uvedenými v klauzuli WHERE. Tyto dvě podmínky by měly být spojeny pomocí operátoru AND.
  • Jedno EXISTUJE podmínka nám může pomoci odstranit záznamy z tabulky na základě záznamů jiné tabulky.

Stáhněte si databázi použitou v tomto kurzu