opublikował: _Wojtek, 2014-02-28

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:

  1. Id (number)
  2. Imię (VARCHAR2(10))
  3. Zawód (VARCHAR2(20))
  4. Wiek (number)

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:

  1. Zmieni wiek wszystkich osób o imieniu Jan na 30.
  2. Dla wszystkich osób powyżej 60 lat ustawi brak zawodu.
  3. Dla osoby o numerze identyfikacyjnym 13 zmieni imię na „Tomasz”
  4. Dla osób w wieku 30 lat ustawi zawód „Listonosz” i imię na „Jan”
  5. Dla wszystkich osób w tabeli ustawi brak zawodu.

 

                                                                                                                                                       Wojciech Besler

Zaloguj się aby dodać komentarz