Generator SQL UPDATE
Zbuduj zapytanie aktualizujące dane
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator zapytania SQL UPDATE
Zapytanie UPDATE zmienia istniejące dane w tabeli. Największe ryzyko to pominięcie klauzuli WHERE — wtedy aktualizacji ulegną wszystkie wiersze.
Struktura zapytania
UPDATE tabela SET kolumna1 = wartość1, kolumna2 = wartość2 WHERE warunek LIMIT 1;
Bezpieczeństwo
- Zawsze sprawdź warunek WHERE przed uruchomieniem.
- Zrób kopię zapasową tabeli, zwłaszcza na produkcji.
- Najpierw wykonaj SELECT z tym samym WHERE, aby zobaczyć, co zmienisz.
- Użyj transakcji, aby móc wycofać zmiany w razie błędu.
Przykład
UPDATE users SET name = 'Jan Kowalski', email = '[email protected]' WHERE id = 1; zmieni dane tylko jednego użytkownika.
Jak działa generator zapytania UPDATE
Generator nie łączy się z żadną bazą danych i nie wykonuje zapytania. Działa w całości w przeglądarce: pobiera wartości z pól formularza i skleja z nich tekst polecenia UPDATE. Kolejność elementów jest zawsze taka sama — najpierw nazwa tabeli, potem lista przypisań SET, dalej warunek WHERE, a na końcu opcjonalne ograniczenie liczby wierszy. Niezależnie od tego, w jakiej kolejności wypełnisz pola, wynik zachowa poprawną składnię.
Drugi etap to rozróżnienie identyfikatorów od wartości. Nazwy tabel i kolumn trafiają do zapytania jako identyfikatory — w razie potrzeby w cudzysłowach, żeby działały nazwy ze spacjami albo pokrywające się ze słowami zarezerwowanymi. Wartości stają się literałami: tekst zamykany w apostrofach, liczby bez apostrofów, data również jako tekst. Dlatego kolumna typu liczbowego z wartością wpisaną w apostrofach może zostać potraktowana przez silnik inaczej, niż oczekujesz.
Trzeci etap to kontrola warunku. Pole WHERE jest obowiązkowe — bez niego narzędzie nie wygeneruje zapytania, bo UPDATE bez warunku dotyka całej tabeli. Wynik jest deterministyczny: te same dane wejściowe dają identyczny tekst, więc zapytanie można skopiować, zapisać w migracji i uruchomić później. Jeśli w wartości tekstowej występuje apostrof, trzeba go zdublować — zapis O''Brien zamiast O'Brien — inaczej silnik uzna, że tekst kończy się w połowie.
Przykład krok po kroku: wyzerowanie stanu pozycji wycofanych
- Tabela: magazyn, w której jest 1200 wierszy. Cel: wyzerować stan pozycji wycofanych i oznaczyć je datą zmiany.
- Do listy SET dodajesz dwie kolumny: stan = 0 (liczba, bez apostrofów) oraz aktualizacja = '2025-01-15' (tekst, w apostrofach). Generator połączy je przecinkiem: SET stan = 0, aktualizacja = '2025-01-15'.
- Warunek WHERE: kategoria = 'wycofane' AND stan > 0. Dwa warunki połączone operatorem AND zawężają zbiór do wierszy, które faktycznie wymagają zmiany.
- Przed uruchomieniem aktualizacji wykonujesz SELECT z tym samym warunkiem. Zwraca 7 wierszy — tyle pozycji zostanie zmienionych.
- Gotowe zapytanie: UPDATE magazyn SET stan = 0, aktualizacja = '2025-01-15' WHERE kategoria = 'wycofane' AND stan > 0 LIMIT 10;
- LIMIT 10 nie zadziała, bo warunek pasuje tylko do 7 wierszy — zmienionych zostanie 7. Gdyby limit wynosił 5, zmieniłoby się 5 wierszy, a pozostałe 2 pozostałyby nietknięte. Weryfikacja po wykonaniu: SELECT COUNT(*) FROM magazyn WHERE aktualizacja = '2025-01-15' zwraca 7.
Elementy zapytania UPDATE — ściągawka
| Element | Za co odpowiada | Na co uważać |
|---|---|---|
| UPDATE tabela | Wskazuje tabelę, w której mają zajść zmiany | Literówka w nazwie kończy się błędem wykonania, a nie cichą pomyłką |
| SET kolumna = wartość | Lista przypisań rozdzielonych przecinkami | Ostatnie przypisanie bez przecinka; przecinek zamiast kropki dziesiętnej w liczbach psuje wartość |
| WHERE warunek | Wybiera wiersze przeznaczone do zmiany | Brak warunku oznacza aktualizację wszystkich wierszy w tabeli |
| LIMIT n | Ogranicza liczbę modyfikowanych wierszy | Obsługa zależy od silnika; bez klauzuli ORDER BY wybór wierszy jest nieokreślony |
| ORDER BY | Ustala kolejność, według której działa LIMIT | Bez niej ten sam LIMIT może za każdym razem trafić w inne wiersze |
| Wartość tekstowa | Literał znakowy zapisany w apostrofach | Wewnętrzny apostrof trzeba podwoić, inaczej zapytanie się rozsypie |
| NULL | Oznacza brak wartości | Warunek kolumna = NULL nigdy nie jest prawdziwy; stosuje się IS NULL |
| Transakcja | Pozwala wycofać zmiany przed zatwierdzeniem | Po COMMIT wycofanie wymaga już kopii zapasowej |
Praktyczne wskazówki użycia
- Zawsze zaczynaj od SELECT — wklej ten sam warunek WHERE do zapytania odczytu i policz wiersze. Jeśli liczba jest inna, niż zakładasz, popraw warunek przed generowaniem UPDATE.
- Warunek opieraj na kluczu — WHERE po kolumnie z indeksem unikalnym (identyfikatorze) jest pewniejsze i szybsze niż filtrowanie po opisie czy dacie, gdzie łatwo trafić w sąsiedni rekord.
- Jedna zmiana, jedno zapytanie — zamiast aktualizować hurtowo kilkaset wierszy, podziel operację na partie. Łatwiej wtedy namierzyć błąd i przerwać w połowie bez wstrzymywania całej tabeli.
- Sprawdź typy przed uruchomieniem — kolumna liczbowa powinna dostać liczbę bez apostrofów, kolumna tekstowa wartość w apostrofach. Data bywa tekstem, ale format musi odpowiadać ustawieniom silnika.
- Trzymaj zapytanie w wersjonowaniu — wygenerowany tekst wklej do pliku migracji z komentarzem, co i dlaczego zmienia. Za pół roku nikt nie odtworzy intencji z samego UPDATE.
Ograniczenia narzędzia
- Brak połączenia z bazą — narzędzie nie zna struktury twoich tabel, typów kolumn ani ograniczeń (klucze obce, NOT NULL, CHECK). Nie powie ci, czy wartość przejdzie walidację.
- Brak aktualizacji z innej tabeli — generator buduje proste UPDATE jednej tabeli. Złączenia w stylu JOIN albo podzapytanie w SET trzeba dopisać ręcznie.
- Brak ustawień specyficznych dla silnika — sposób ograniczania liczby wierszy, cytowanie identyfikatorów i funkcje dat zależą od bazy. Wygenerowany tekst trzeba dostosować do MySQL, PostgreSQL czy SQL Server.
- Brak walidacji semantycznej — narzędzie pilnuje składni i obecności WHERE, ale nie sprawdzi, czy warunek obejmuje właściwe wiersze. To nadal twoja odpowiedzialność i kopia zapasowa przed uruchomieniem.
Najczęstsze pytania
Co jeśli zapomnę WHERE?
Wszystkie wiersze zostaną zaktualizowane. Dlatego generator domyślnie wymaga warunku — to celowe zabezpieczenie.
Czy LIMIT działa w każdym silniku?
W MySQL/MariaDB tak. W PostgreSQL używa się klauzuli WHERE ctid IN (...) lub aktualizacji po kluczu. W SQL Server — TOP.
Jak wycofać zmiany?
Tylko jeśli pracowałeś w transakcji i wykonasz ROLLBACK. Po COMMIT potrzebna jest kopia zapasowa.
Jak zaktualizować kilka kolumn jednym zapytaniem?
Wypisz przypisania po SET, rozdzielając je przecinkami, na przykład SET stan = 0, aktualizacja = '2025-01-15'. Silnik wykona oba przypisania w ramach jednego wiersza i jednej operacji.
Jak ustawić różne wartości w różnych wierszach?
Użyj wyrażenia CASE wewnątrz SET, na przykład cena = CASE WHEN id = 1 THEN 10,50 WHEN id = 2 THEN 12,00 ELSE cena END. Wiersze spoza warunków zachowają dotychczasową wartość.
Czy UPDATE można połączyć z JOIN?
Tak, ale składnia jest różna. MySQL pozwala dopisać JOIN bezpośrednio po nazwie tabeli, PostgreSQL używa klauzuli FROM, a SQL Server klauzuli FROM z aliasem. To rozwiązanie poza zakresem generatora.
Jak zaktualizować kolumnę wartością z innej kolumny?
Po prawej stronie znaku równości możesz podać nazwę kolumny albo wyrażenie, na przykład SET cena = cena * 1,23. Wartość zostanie policzona na podstawie aktualnego wiersza, a nie wartości stałej.
Dlaczego UPDATE działa wolno?
Najczęstsza przyczyna to warunek WHERE bez indeksu — silnik musi przejrzeć całą tabelę. Drugi powód to blokady: długo otwarta transakcja blokuje wiersze, których dotyczą równoległe operacje.