Często do tabel wpisujemy błędne wartości bądź też dane, które w przyszłości trzeba będzie zmieniać, ze względu na ich przedawnienie (np. numer telefonu).
Co należy zrobić w takiej sytuacji?
Nie będziemy tworzyć tabeli od początku i wpisywać insertów z poprawnymi wartościami, gdyż byłoby to zbyt czasochłonne. Zamiast tego, skorzystamy z instrukcji UPDATE.
Z czego składa się instrukcja UPDATE?
UPDATE <nazwa_tabeli_w_której_jest_nasza_wartość>
SET<nazwa kolumny w której jest nasza wartość>=<wartość na jaką chcemy ją zmienić>
WHERE <warunek>
Z ang.
Aktualizuj<nazwa_tabeli_w_której_jest_nasza_wartość>
Ustaw<nazwa kolumny w której jest nasza wartość>=<wartość na jaką chcemy ją zmienić>
Gdzie <warunek>
Przykład 1:
UPDATE klienci
SET faktura=’nie’
WHERE id=5;
Spowoduje to wstawienie wartości „nie” do kolumny „faktura” w wierszu, w którym id wynosi 5.
Czy można zaktualizować jednocześnie 3 kolumny za pomocą jednego polecenia?
Aby zaktualizować więcej niż jedną kolumnę wystarczy w instrukcji oddzielić ją przecinkami.
Przykład 2:
UPDATE klienci
SET faktura=’nie’, ulica=’Piotrkowska’, zawód=’piosenkarz’
WHERE id=5;
Gdzie faktura, ulica i zawód to nazwy kolumn w tabeli.
Co podajemy w klauzuli WHERE?
Aby określić, które wiersze chcemy uaktualnić, piszemy odpowiedni warunek logiczny w klauzuli WHERE. Jest on bardzo ważny, ponieważ błędnie napisany spowoduje zmianę niechcianych przez nas pól.
Przykład 3:
UPDATE klienci
SET faktura=’nie’
WHERE id>1 and id<5;
Spowoduje wpisanie w kolumnie „faktura” słowa „nie” w wierszu, w którym id wynosi 2,3 lub 4.
Co się stanie, jeżeli nie napiszemy warunku?
Pisząc warunek logiczny ustalamy, które wiersze chcemy uaktualnić. Jeżeli nie podamy żadnego wiersza, program aktualizuje wszystkie w naszej tabeli. To samo byłoby gdybyśmy napisali:
Przykład 4:
UPDATE klienci
SET faktura=’nie’
WHERE 1=1;
Warunek 1=1 jest zawsze spełniony, co spowoduje, że we wszystkich wierszach naszej tabeli w kolumnie „faktura” pojawi się „nie”.
Jest to wada, przez którą możemy narobić sobie wielu problemów. Dlatego należy pamiętać aby pisać warunek w klauzuli WHERE.
Czy aktualizując tabelę, możemy podać inny typ niż jest ustawiony w kolumnie?
Aktualizując tabelę musimy pamiętać, aby nowa wartość mieściła się w typie kolumny, w której chcemy ją umieścić. Typ kolumny możemy zobaczyć wpisując desc <nazwa_tabeli> np.
DESC klienci;
Przykład 5:
Mamy gotową tabelę klienci, składającą się z 4 kolumn i wypełnioną danymi dla id od 1 do 30:
Wpisując:
UPDATE klienci
SET Imię=’Hermenegilda’
Where id=5;
Otrzymamy błąd, ponieważ imię ma ograniczenie maksymalnie 10 znaków.
Natomiast możliwe jest:
UPDATE klienci
SET Wiek=NULL
WHERE id=5;
Spowoduje wyzerowanie wartości wieku dla osoby o numerze identyfikacyjnym 5.
Zadania sprawdzające:
Na podstawie tabeli z przykładu 5 napisać polecenie, które:
Wojciech Besler