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:
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:
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.
SELECT * FROM osoby WHERE login = 'x'; login | imie | nazwisko | mail -------+------+----------+------ x | x | x | x (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:
SELECT * FROM osoby; login | imie | nazwisko | mail -------+------------------+-------------+------------------------ a | Adam | Kowalski | adam.kowalski@mail.pl b | Basia | Nowak | basia.nowak@mail.pl e | A TO mój znajomy | | f | :) | nasza-klasa | tralalala d | Ewa | Piątek | Basia na belwederskiej d | Basia | Piątek | Ewa na belwederskiej c | cYPRIAN | pan | cyprian.pl x | x | x | x (8 rows) DELETE FROM osoby WHERE login = 'x'; DELETE 1 SELECT * FROM osoby; login | imie | nazwisko | mail -------+------------------+-------------+------------------------ a | Adam | Kowalski | adam.kowalski@mail.pl b | Basia | Nowak | basia.nowak@mail.pl e | A TO mój znajomy | | f | :) | nasza-klasa | tralalala d | Ewa | Piątek | Basia na belwederskiej d | Basia | Piątek | Ewa na belwederskiej c | cYPRIAN | pan | cyprian.pl (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.
SELECT * FROM osoby WHERE login ='e'; login | imie | nazwisko | mail -------+------------------+----------+------ e | A TO mój znajomy | | (1 row) UPDATE osoby SET nazwisko = 'Wtorek' WHERE login = 'e'; UPDATE 1 SELECT * FROM osoby WHERE login ='e'; login | imie | nazwisko | mail -------+------------------+----------+------ e | A TO mój znajomy | Wtorek | (1 row)
Jak widać nazwisko osoby o loginie e zostało zmienione na Wtorek.
W ten sposób możesz modyfikować dane w tabelach.