Podsumowanie: W tym poradniku dowiesz się jak używać instrukcji PostgreSQL DELETE do usuwania danych z tabeli.
Wprowadzenie do instrukcji PostgreSQL DELETE
Określenie PostgreSQL DELETE
umożliwia usunięcie jednego lub więcej wierszy z tabeli.
Poniżej przedstawiono podstawową składnię polecenia DELETE
:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE condition;
W tej składni:
- Najpierw określ nazwę tabeli, z której chcesz usunąć dane po słowach kluczowych
DELETE FROM
. - Po drugie, użyj warunku w klauzuli
WHERE
, aby określić, które wiersze z tabeli mają zostać usunięte.
Klauzula WHERE
jest opcjonalna. Jeśli pominiesz klauzulę WHERE
, instrukcja DELETE
usunie wszystkie wiersze z tabeli.
Konstrukcja DELETE
zwraca liczbę usuniętych wierszy. Zwraca zero, jeśli instrukcja DELETE
nie usunęła żadnego wiersza.
Aby zwrócić usunięty wiersz (wiersze) do klienta, użyj klauzuli RETURNING
w następujący sposób:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE conditionRETURNING (select_list | *)
Gwiazdka (*
) pozwala zwrócić wszystkie kolumny usuniętego wiersza z klauzuli table_name
.
Aby zwrócić konkretne kolumny, określ je po słowie kluczowym RETURNING
.
Zauważ, że instrukcja DELETE
usuwa tylko dane z tabeli. Nie modyfikuje ono struktury tabeli. Jeśli chcesz zmienić strukturę tabeli, np. usunąć kolumnę, powinieneś użyć instrukcji ALTER TABLE
.
PostgreSQL Przykłady instrukcji DELETE
Postawmy przykładową tabelę do demonstracji.
Poniższe instrukcje tworzą nową tabelę o nazwie links
oraz wstawiają przykładowe dane:
Code language: SQL (Structured Query Language) (sql)DROP TABLE IF EXISTS links;CREATE TABLE links ( id serial PRIMARY KEY, url varchar(255) NOT NULL, name varchar(255) NOT NULL, description varchar(255), rel varchar(10), last_update date DEFAULT now());INSERT INTO links VALUES ('1', 'https://www.postgresqltutorial.com', 'PostgreSQL Tutorial', 'Learn PostgreSQL fast and easy', 'follow', '2013-06-02'), ('2', 'http://www.oreilly.com', 'O''Reilly Media', 'O''Reilly Media', 'nofollow', '2013-06-02'), ('3', 'http://www.google.com', 'Google', 'Google', 'nofollow', '2013-06-02'), ('4', 'http://www.yahoo.com', 'Yahoo', 'Yahoo', 'nofollow', '2013-06-02'), ('5', 'http://www.bing.com', 'Bing', 'Bing', 'nofollow', '2013-06-02'), ('6', 'http://www.facebook.com', 'Facebook', 'Facebook', 'nofollow', '2013-06-01'), ('7', 'https://www.tumblr.com/', 'Tumblr', 'Tumblr', 'nofollow', '2013-06-02'), ('8', 'http://www.postgresql.org', 'PostgreSQL', 'PostgreSQL', 'nofollow', '2013-06-02');
Tutaj znajduje się zawartość tabeli links
:
Code language: SQL (Structured Query Language) (sql)SELECT * FROM links;
1) Użycie PostgreSQL DELETE do usunięcia jeden wiersz z tabeli
Poniższe wyrażenie używa instrukcji DELETE
do usunięcia jednego wiersza o id 8 z tabeli links
:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 8;
Oświadczenie zwraca 1 wskazuje, że jeden wiersz został usunięty:
Code language: Shell Session (shell)DELETE 1
Następująca instrukcja używa instrukcji DELETE
do usunięcia wiersza o id 10:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 10;
Ponieważ wiersz o id 10 nie istnieje, instrukcja zwraca 0:
Code language: Shell Session (shell)
2) Użycie PostgreSQL DELETE do usunięcia wiersza i zwrócenia usuniętego wiersza
Poniższe wyrażenie usuwa wiersz o id 7 i zwraca usunięty wiersz do klienta:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 7RETURNING *;
PostgreSQL zwraca następujący usunięty wiersz:
3) Użycie metody PostgreSQL DELETE do usunięcia wielu wierszy z tabeli
Poniższe polecenie usuwa dwa wiersze z tabeli links
i zwraca wartości w kolumnie id
usuniętych wierszy:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id IN (6,5)RETURNING *;
Wyjście:
4) Użycie metody PostgreSQL DELETE do usunięcia wszystkich wierszy z tabeli
Następująca instrukcja wykorzystuje instrukcję DELETE
bez klauzuli WHERE
do usunięcia wszystkich wierszy z tabeli links
:
Tabela links
jest teraz pusta.
Podsumowanie
- Użyj instrukcji
DELETE FROM
, aby usunąć jeden lub więcej wierszy z tabeli. - Użyj klauzuli
WHERE
, aby określić, które wiersze mają zostać usunięte. - Użyj klauzuli
RETURNING
aby zwrócić usunięte wiersze.
- Czy ten poradnik był pomocny?
- TakNie