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: 38473

