Rozdział 10. ♦ Podstawy SQL 305
Dane zapisane w tabelach mogą być zmieniane i modyfikowane. Służy do tego celu instrukcja UPDATE, która ma ogólną postać:
UPDATE tabela
SET kolumnal-wartośćl. kolumna2=wartość2.....kolumnaN=wartośćN
[WHERE warunek]
Oznacza ona: zmień w tabeli tabela, w wierszach spełniających warunek, pole kolumnal na wartości, pole kolumna2 na wartość2 itd. Klauzula WHERE jest opcjonalna i może zostać pominięta; w takiej sytuacji zmianie ulegną wszystkie wskazane wiersze w tabeli. Zastosowanie przykładowej instrukcji: update osoba set 1mie='Jan':
spowoduje zamianę imion wszystkich osób, których dane zapisane są w tabeli na ciąg Jan (rysunek 10.17). Zawsze należy więc pamiętać o zastosowaniu odpowiedniego warunku, inaczej możemy osiągnąć efekty niezgodne z założeniami. Oczywiście może się też zdarzyć, że chcemy zmienić wszystkie wartości w danej kolumnie, wtedy taka instrukcja będzie jak najbardziej poprawna.
Rysunek 10.17. select * from osoba;
Id |
Imię |
Nazwisko |
RokJJrodzenia 1 Mie jsce_Urodzenia |
3 4 5 6 7 9 10 |
Jan Jan Jan Jan Jan Jan Jan Jan Jan |
Kowalski Nowak Kowalski Malinowski Malinowski Nowicki Adamczyk Andrzejczak Arkuszewski Borowski |
1964 1 Bydgoszcz 1972 ! Szczecin 1986 ! Nidzica 1986 1 Kielce 1989 1 Kielce 1986 1 Bydgoszcz 1971 1 Kielce 1971 ! Radom 1989 ! Szczecin 1976 1 Skierniewice |
10 rows in set <0.00 sec>
Zastosowanie skróconej wersji instrukcji UPDATE spowodowało zamianę wszystkich wartości w kolumnie Imię
Najczęściej jednak aktualizuje się jeden lub kilka wierszy, stosowanie klauzuli WHERE jest więc konieczne. Przykładowo, jeśli okaże się, że w tablicy zapisaliśmy błędny rok urodzenia Andrzeja Malinowskiego, któremu w tabeli został przypisany identyfikator 5 i trzeba zamienić wartość 1989 na 1988, należałoby zastosować instrukcję:
UPDATE Osoba SET Rok_Urodzenia=1988 WHERE id=5:
Warunek id=5 został zastosowany, pole id jest bowiem kluczem podstawowym jednoznacznie identyfikującym każdy rekord. Po wykonaniu tego zapytania otrzymamy informację, czy zakończyło się ono sukcesem, ile rekordów spełniało warunek (Rows matched) i ile rekordów zostało zmodyfikowanych (Changed), tak jak jest to widoczne na rysunku 10.18.
Rysunek 10.18.
Efekt wykonania
zapytania
aktualizującego
niisql> update osoba set Rok_U»“odzenia=1988 where id =5; Query OK, 1 row affected <0.06 sec>
Rows matched: 1 Changed: 1 Warnings: 0