Skip to Content

Modyfikacja danych

Nauczyliśmy się tworzyć tabele i dodawać do nich wiersze, ale nie potrafimy sobie poradzić z sytuacją, kiedy wprowadzimy do systemu błędne dane. Nie umiemy jeszcze ani skasować ani zmodyfikować raz wprowadzonych danych. Popatrzmy jak to się robi.

Do kasowania danych służy instrukcja DELETE FROM

W najprostszej formie (nie rób tego) wygląda ona tak:

  1. DELETE FROM oceny;

Skasuje ona wszystkie wiersze z tabeli oceny i nie da się ich odzyskać! Więc nie rób tego.

Załóżmy, że wprowadziłeś do tabeli osoby błędny wiersz:

  1. INSERT INTO osoby VALUES('x','x','x','x');

i chciałbyś go teraz usunąć. Jak to zrobić? Może najpierw zastanówmy się jak wypisać tylko ten jeden błędny wiersz.

  1. SELECT * FROM osoby WHERE login = 'x';
  2. login | imie | nazwisko | mail
  3. -------+------+----------+------
  4. x | x | x | x
  5. (1 row)

Wygląda na to, że ta instrukcja wypisuje dokładnie ten wiersz który chcemy usunąć. Czy można ją wykorzystać do usuwania danych? Otóż tak. Wystarczy, że zamienimy SELECT * na DELETE i już będziemy mieli instrukcje kasującą wiersz. Spróbujmy:

  1. SELECT * FROM osoby;
  2. login | imie | nazwisko | mail
  3. -------+------------------+-------------+------------------------
  4. a | Adam | Kowalski | adam.kowalski@mail.pl
  5. b | Basia | Nowak | basia.nowak@mail.pl
  6. e | A TO mój znajomy | |
  7. f | :) | nasza-klasa | tralalala
  8. d | Ewa | Piątek | Basia na belwederskiej
  9. d | Basia | Piątek | Ewa na belwederskiej
  10. c | cYPRIAN | pan | cyprian.pl
  11. x | x | x | x
  12. (8 rows)
  13.  
  14. DELETE FROM osoby WHERE login = 'x';
  15. DELETE 1
  16.  
  17. SELECT * FROM osoby;
  18. login | imie | nazwisko | mail
  19. -------+------------------+-------------+------------------------
  20. a | Adam | Kowalski | adam.kowalski@mail.pl
  21. b | Basia | Nowak | basia.nowak@mail.pl
  22. e | A TO mój znajomy | |
  23. f | :) | nasza-klasa | tralalala
  24. d | Ewa | Piątek | Basia na belwederskiej
  25. d | Basia | Piątek | Ewa na belwederskiej
  26. c | cYPRIAN | pan | cyprian.pl
  27. (7 rows)

Widać, że osoba o loginie 'x' zniknęła i o to nam chodziło.

A co zrobić jeśli chcemy zmodyfikować jakąś wartość. Na przykład wpisać nazwisko osobie o loginie 'e'. Służy do tego instrukcja UPDATE.

  1. SELECT * FROM osoby WHERE login ='e';
  2. login | imie | nazwisko | mail
  3. -------+------------------+----------+------
  4. e | A TO mój znajomy | |
  5. (1 row)
  6.  
  7. UPDATE osoby SET nazwisko = 'Wtorek' WHERE login = 'e';
  8. UPDATE 1
  9. SELECT * FROM osoby WHERE login ='e';
  10. login | imie | nazwisko | mail
  11. -------+------------------+----------+------
  12. e | A TO mój znajomy | Wtorek |
  13. (1 row)

Jak widać nazwisko osoby o loginie e zostało zmienione na Wtorek.

W ten sposób możesz modyfikować dane w tabelach.