UPDATE – czyli aktualizacja danych w bazie przy pomocy SQL

Jak już zapewne wiecie do aktualizacji rekordów w bazie danych służy zapytanie SQL – UPDATE. Przy jego pomocy zmieniać możemy nie tylko pojedyncze wartości poszczególnych wierszy, ale również zawartości całych kolumn. Składnia polecenia UPDATE jest następująca:

UPDATE nazwa_tabeli SET kolumna1=nowa_wartość WHERE warunek;

Zapytaniem SQL możemy modyfikować zarówno wszystkie rekordy, jak i tylko pojedyncze, które spełniają określony warunek WHERE. Może on być połączony z jednym z operatorów takich jak: LIKE, IN, BETWEEN, >, <, <=, >=, <>, !=, =

Przejdźmy zatem do przykładów. Zmianę danych przeprowadzimy na znanej z poprzednich wpisów tabeli: pracownicy, którą widzicie poniżej.

pracownicy

Przykład 1:

Podniesiemy wszystkim pracownikom stawkę godzinową o 50%, czyli pole stawka pomnożymy razy 1.5 (uwaga: wartości dziesiętne w SQL poprzedzamy kropką, a nie przecinkiem). Jako, że zmiana będzie dotyczyła wszystkich pracowników klauzula WHERE w tym przykładzie nie wystąpi. Gotowe zapytanie wygląda następująco:

UPDATE pracownicy set stawka=stawka*1.5;

Po wykonaniu zapytania nasza tabela wyglądać będzie jak poniżej (wszystkie wartości w kolumnie stawka zostały powiększone o połowę):

tabela pracownicy po aktualizacji pola stawka

Przykład 2:

W drugim przekładzie zmodyfikujemy tylko jeden rekord o id = 236 i zmienimy nazwisko. Spójrzmy zatem na gotowe zapytanie SQL:

UPDATE pracownicy SET nazwisko='stanwkiewicz' WHERE id='236';

Tabela wygląda teraz następująco:

tabela pracownicy po zmianie nazwiska dla pracownika o id 236

Celowo podałem nazwisko stankiewicz z małej litery, aby w następnym przykładzie je poprawić.

Przykład 3:

Poprawny teraz nazwisko, tak aby zaczynało się ono z dużej litery. Skomplikujmy jednak warunek where. Zmiana nazwiska ma nastąpić dla pracowników, których id zawiera się w zbiorze (234,235,236) oraz ich stawka godzinowa mieści się w przedziale 30,00 - 39.99.

Spójrzmy na gotowe zapytanie SQL:

UPDATE pracownicy set 
nazwisko=CONCAT(UPPER(LEFT(nazwisko,1)), MID(nazwisko,2,(LENGTH(nazwisko)-1)))
WHERE id IN (234,235,236) AND stawka BETWEEN 30.00 AND 39.99;

W powyższym przykładzie wykorzystaliśmy funkcje:

  • LEFT aby pobrać pierwszą literę i powiększyć ją za pomocą UPPER
  • MID w celu wycięcia pozostałej części z pola nazwiska począwszy od znaku 2 do ostatniego – wyznaczony poprzez LENGTH (długość – 1)
  • CONCAT aby połączyć dwa powyższe ciągi

Nasza tabela pracownicy wygląda teraz jak poniżej:

tabela pracownicy po poprawieniu nazwiska

Jeżeli potrzebujesz innych przykładów, bądź pomocy w SQL zapytaj w komentarzu.

W następnym wpisie pokażę jak można modyfikować dane w tabelach korzystając z danych z innych tabel i oczywiście polecenia UPDATE.