Składnia polecenia UPDATE zależy od tego, w ilu tablicach dokonujemy zmiany danych. I tak: w przypadku jednej tablicy: (patrz Listing 1.0), a w przypadku wielu tablic:(patrz Listing 2.0) Za pomocą polecenia UPDATE możemy zmienić zawartość kolumn w istniejących wierszach tablicy. Słowo SET wskazuje, które kolumny będziemy zmieniać oraz co będzie ich nową zawartością. Jeśli w poleceniu UPDATE wpiszemy słowo WHERE to możemy określić, w których wierszach dokonamy zmian, przy czym obowiązują tutaj zwyczajne zasady wyboru odpowiednich wierszy, tak jak w innych poleceniach SQL, a w szczególności w przypadku polecenia SELECT. Jeśli nie podamy opcji WHERE, wtedy zostaną zmienione wszystkie wiersze (uwaga! niebezpieczne). Podobnie działa opcja LIMIT; ogranicza liczbę wierszy, które ulegną zmianie podczas wykonywania polecenia UPDATE. W przypadku słowa UPDATE możemy używać następujących dwóch parametrów: Polecenie UPDATE zapamiętuje bierzącą (przed zmianą) wartość danej kolumny. Na przykład, jeśli chcemy zwiększyć wartość kolumny o 2 to możemy wykonać następujące polecenie:(patrz Listing 3.0) Przypisania (po słowie SET są wykonywane w poleceniu UPDATE od lewej do prawej. W przykłaszie poniżej najpierw następuje pomnożenie wartości kolumny przez 2, a dopiero później zwiększenie wartości kolumny o 1:(patrz Listing 4.0) Jeśli próbujemy nadać kolumnie nową wartość, która jest taka sama jak poprzednia, to MySQL zasygnalizuje ten fakt. Jeśli zmieniamy kolumny, które przy definicji tablicy były zadeklarowane jako NOT NULL wstawiając wartość NULL, wtedy MySQL wstawia do takiej kolumny wartość domyślną i wypisuje ostrzeżenie. Wartościami domyślnymi są (chyba, że przy definicji struktury tablicy zaznaczono inaczej): 0 dla kolumn typu numerycznego, pusty string '' dla kolumn typu znakowego, oraz wartość ``zero'' dla kolumn typu data i czas. Polecenie UPDATE zwraca liczbę wmienionych rekordów (wierszy). Zaczynając od wersji 3.23 MySQLa możemy używać opcji LIMIT liczba_wierszy w celu ograniczenia liczby wierszy, które zmienimy poleceniem UPDATE. Opcja LIMIT liczba_wierszy działa następująco: Jeśli użyjemy opcji ORDER BY wtedy wiersze będą zmieniane w kolejności takiej jak podano w to w tej opcji. Od wersji 4.04 MySQLa za pomocą jednego polecenia UPDATE możemy zmieniać dane w kilku tablicach:(patrz Listing 5.0) Uwaga. Przy poleceniu UPDATE działającym na kilku tablicach, nie możemy używać opcji ORDER BY i LIMIT. Aby wykonać zmiany w tablicy musimy mieć odpowiednie przywileje do dokonywania takich zmian. Kiedy chcemy zmienić dane w kilku tablicach typu InnoDB, dla których zdefiniowane są klucze klucze obce, wtedy najprawdopodobniej MySQL wykona UPDATE w innej kolejności niż wynikałoby to z relacji rodzic/dziecko. W takim wypadku najprawdopodobniej polecenie UPDATE się nie powiedzie i dane nie zostaną zmienione. W takich wypadkach lepiej jest zmienić dane w jednej tablicy i polegać na możliwościach tablic typu InnoDB, dzięki którym tablice z kluczami obcymi zostaną zmienione w sposób odpowiedni.
Listing
UPDATE
[LOW_PRIORITY] [IGNORE] nazwa_tab
SET nazwa_kol1=wyr1 [, nazwa_kol2=wyr2 ...]
[WHERE definicja_where]
[ORDER BY ...]
[LIMIT liczba_wierszy]
--Listing 2.0
UPDATE
[LOW_PRIORITY] [IGNORE] nazwa_tab1 [, nazwa_tab2 ...]
SET nazwa_kol1=wyr1 [, nazwa_kol2=wyr2 ...]
[WHERE definicja_where]
--Listing 3.0
UPDATE dane_personalne SET wiek=wiek+1;
--Listing 4.0
UPDATE dane_personalne SET wiek=wiek*2, wiek=wiek+1;
--Listing 5.0
UPDATE jednostki, miesiace SET jednostki.cena=miesiace.cena WHERE jednostki.id=miesiace.id;
Ranga: Administrator serwisu Punktów: 0