PostgreSQL USUŃ wiersze z zaznaczenia

⚡ Inteligentne podsumowanie

PostgreSQL Polecenie DELETE usuwa jeden lub więcej wierszy z tabeli i w połączeniu z klauzulą ​​WHERE usuwa tylko rekordy spełniające warunek, natomiast pominięcie klauzuli WHERE czyści wszystkie wiersze w tabeli.

  • 📋 Składnia: Warunek DELETE FROM tabeli WHERE usuwa pasujące wiersze, a RETURNING może wyświetlić usunięte dane.
  • 🎯 Jeden warunek: Pojedyncza klauzula WHERE usuwa tylko wiersze spełniające jeden test.
  • Dwa warunki: Połączenie dwóch testów za pomocą AND zawęża usuwanie do precyzyjnych wierszy.
  • 🔗 Klauzula EXISTS: EXISTS usuwa wiersze w jednej tabeli na podstawie pasujących rekordów w innej tabeli.
  • 🖥️. pgAdmin: Te same zapytania dotyczące usuwania są uruchamiane wizualnie w edytorze zapytań pgAdmin.
  • 🤖 Bezpieczeństwo sztucznej inteligencji: Asystenci AI dodają poprawną klauzulę WHERE i ostrzegają przed usunięciem całej tabeli.

PostgreSQL Usuń wiersze z zaznaczenia

Usuń zapytanie w PostgreSQL

Instrukcja DELETE in PostgreSQL Służy do usuwania jednego lub więcej rekordów z tabeli. Aby usunąć tylko wybrane wiersze z tabeli, PostgreSQL umożliwia połączenie polecenia DELETE z klauzulą ​​WHERE; w przeciwnym wypadku usuwa wszystkie rekordy w tabeli.

PostgreSQL Usuń składnię zapytania

Polecenie DELETE można zdefiniować, korzystając z poniższej składni:

[ 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

Dostępne są następujące parametry:

  • z zapytaniem:Klauzula WITH umożliwia odwołanie się do jednego lub większej liczby podzapytań według nazwy wewnątrz zapytania DELETE.
  • Nazwa tabeli: nazwa tabeli, z której mają zostać usunięte rekordy.
  • alias:zamiennik nazwy tabeli docelowej.
  • używając listy: wyrażenia tabelowe umożliwiające używanie kolumn z innych tabel w klauzuli WHERE.
  • warunki): Opcjonalnie. Oto warunki, które muszą zostać spełnione, aby rekordy zostały usunięte. Jeśli ta sekcja nie zostanie podana, wszystkie rekordy o nazwach tabel zostaną usunięte.
  • nazwa-kursora: kursor, który ma zostać użyty w warunku WHERE CURRENT OF. Ostatni wiersz pobrany przez ten kursor zostanie usunięty.
  • wyrażenie wyjściowe: wyrażenie, które ma zostać przetworzone i zwrócone przez instrukcję DELETE po usunięciu każdego wiersza.
  • nazwa-wyjścia: nazwa, która ma być używana dla zwracanej kolumny.

Należy pamiętać, że ponieważ polecenie DELETE usuwa cały wiersz, nie trzeba określać nazw kolumn.

PostgreSQL Usuń zapytanie z jednym warunkiem

Polecenie DELETE można użyć z pojedynczym warunkiem, który jest ustawiany za pomocą klauzuli WHERE. Rozważmy tabelę Price z następującymi danymi:

Cena:

PostgreSQL Usuń zapytanie z jednym warunkiem

Usuńmy rekord o identyfikatorze 4:

DELETE FROM Price
WHERE id = 4;

Powyższe polecenie usuwa rekordy, których identyfikator wynosi 4. Sprawdźmy, czy usunięcie zakończyło się powodzeniem:

PostgreSQL Usuń zapytanie z jednym warunkiem

Wiersz o identyfikatorze 4 został usunięty.

Usuń zapytanie z dwoma warunkami

PostgreSQL Instrukcja DELETE może również przyjmować dwa warunki. Należy je połączyć operatorem AND. Użyjemy poniższej tabeli:

Cena:

PostgreSQL Usuń zapytanie z dwoma warunkami

Rozważmy przykład podany poniżej:

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

W powyższym poleceniu usuwamy wiersz, w którym identyfikator wynosi 3, a cena 300. Teraz możemy wykonać zapytanie do tabeli:

SELECT * FROM Price;

To zwraca następujące informacje:

PostgreSQL Usuń zapytanie z dwoma warunkami

Rekord o identyfikatorze 3 i cenie 300 został usunięty.

PostgreSQL Usuń zapytanie przy użyciu warunku EXISTS

Z ISTNIEJE W tym przypadku możesz bardziej skomplikować operację DELETE. Czasami może zaistnieć potrzeba usunięcia rekordów z jednej tabeli na podstawie rekordów z innej tabeli.

Ponieważ klauzula FROM nie pozwala na wyświetlenie rekordów z więcej niż jednej tabeli podczas usuwania, klauzula EXISTS staje się bardzo przydatna. Mamy następujące dwie tabele:

Książka:

PostgreSQL Usuń zapytanie przy użyciu warunku EXISTS

Cena:

PostgreSQL Usuń zapytanie przy użyciu warunku EXISTS

Następnie możemy uruchomić następujące zapytanie:

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

Polecenie usuwa wiersze z tabeli Book, które mają identyfikator pasujący do tabeli Price z ceną poniżej 250.

Tabela Book wygląda teraz następująco:

PostgreSQL Usuń zapytanie przy użyciu warunku EXISTS

Rekord o identyfikatorze 1 został usunięty.

Jak usunąć wiersz w PostgreSQL za pomocą pgAdmina

Te same zapytania dotyczące usuwania można również uruchomić wizualnie za pomocą interfejsu pgAdmin, wykonując poniższe kroki:

Z jednym warunkiem

Krok 1) Zaloguj się na swoje konto pgAdmin. Otwórz pgAdmin i zaloguj się na swoje konto, używając swoich danych logowania.

Krok 2) Utwórz bazę danych demonstracyjną.

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Krok 3) Wpisz poniższe zapytanie w edytorze zapytań:

DELETE FROM Price
WHERE id = 4;

Krok 4) Kliknij przycisk Wykonaj.

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Krok 5) Sprawdźmy, czy wiersz został usunięty:

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Z dwoma warunkami

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Krok 5) Sprawdźmy, czy usunięcie się powiodło:

Usuń wiersz w PostgreSQL za pomocą pgAdmina

Korzystanie z warunku ISTNIEJE

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

Usuń wiersz przy użyciu warunku EXISTS w pgAdmin

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Usuń wiersz przy użyciu warunku EXISTS w pgAdmin

Krok 5) Sprawdźmy, czy usunięcie się powiodło:

Usuń wiersz przy użyciu warunku EXISTS w pgAdmin

Pobierz bazę danych używaną w tym samouczku

FAQ

TRUNCATE natychmiast usuwa każdy wiersz i resetuje pamięć, ale ignoruje klauzulę WHERE i wyzwalacze dla poszczególnych wierszy. DELETE usuwa wybrane wiersze za pomocą klauzuli WHERE, uruchamia wyzwalacze wierszy i można je wycofać w ramach transakcji.

Dodaj klauzulę USING: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Łączy ona drugą tabelę i usuwa pasujące wiersze, dając ten sam wynik co EXISTS, ale z bardziej przejrzystą składnią łączenia.

Funkcja RETURNING zwraca kolumny z wierszy, które zostały właśnie usunięte w tym samym poleceniu. Napisz DELETE FROM Price WHERE id = 4 RETURNING *, a PostgreSQL zwraca usunięte dane, dzięki czemu aplikacje mogą zalogować się do rejestru lub potwierdzić zmianę.

Tak. Umieść polecenie DELETE w transakcji za pomocą polecenia BEGIN, a następnie uruchom polecenie ROLLBACK, aby je cofnąć, lub polecenie COMMIT, aby je zachować. Do momentu zatwierdzenia usunięte wiersze można przywrócić, co chroni przed przypadkowym usunięciem.

Zachowaj jedną kopię na grupę, używając ukrytej kolumny ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. W ten sposób usuwane są zduplikowane wiersze, a zachowywany jest pojedynczy rekord.

Najpierw uruchom ten sam filtr, co w przypadku instrukcji SELECT, lub otwórz transakcję za pomocą instrukcji BEGIN i użyj instrukcji RETURNING, aby sprawdzić zmienione wiersze. RevWyświetlenie wyniku polecenia WHERE przed poleceniem COMMIT zapobiega usunięciu większej liczby wierszy niż planowano.

Asystenci AI tłumaczą reguły prostego języka angielskiego na instrukcję DELETE z poprawną klauzulą ​​WHERE, sugerują EXISTS lub USING w przypadku usuwania danych między tabelami i oznaczają polecenia flagowe, w których brakuje warunku, który wyczyściłby całą tabelę.

Tak. Drugi pilot AI sprawdza każde polecenie DELETE, ostrzega w przypadku braku klauzuli WHERE i zaleca transakcję lub podgląd RETURNING, zmniejszając ryzyko przypadkowego usunięcia całej tabeli.

Podsumuj ten post następująco: