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 
RETURNINGaby zwrócić usunięte wiersze. 
- Czy ten poradnik był pomocny?
 - TakNie