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.
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ę):
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:
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 znaku2
do ostatniego – wyznaczony poprzezLENGTH
(długość – 1)CONCAT
aby połączyć dwa powyższe ciągi
Nasza tabela pracownicy wygląda teraz jak poniżej:
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
.