Generator SQL ALTER TABLE
Zmień strukturę tabeli
-
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 ALTER TABLE
Zapytanie ALTER TABLE zmienia strukturę istniejącej tabeli — bez utraty danych. To podstawowe narzędzie migracji i rozwoju schematu.
Operacje
| Operacja | Składnia |
|---|---|
| Dodaj kolumnę | ADD COLUMN nazwa TYP |
| Zmień kolumnę | MODIFY COLUMN nazwa TYP |
| Usuń kolumnę | DROP COLUMN nazwa |
| Zmień nazwę | RENAME COLUMN stara TO nowa |
Przykłady
ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT NULL; ALTER TABLE users DROP COLUMN email; ALTER TABLE users RENAME COLUMN email TO mail;
Bezpieczeństwo
- Zrób kopię zapasową przed zmianą struktury.
- Na dużych tabelach ALTER może zablokować zapisy na długo.
- Usunięcie kolumny nieodwracalnie kasuje dane.
- Testuj migrację najpierw na kopii bazy.
Jak generator składa zapytanie ALTER TABLE
Generator działa jak kreator jednego zapytania: rozbija zmianę struktury tabeli na pojedyncze operacje, a potem składa je w jeden statement ALTER TABLE. Dla każdej operacji podajesz nazwę tabeli, rodzaj zmiany (dodanie, modyfikacja, usunięcie, zmiana nazwy kolumny), nazwę kolumny oraz typ danych. Pola opcjonalne, takie jak NOT NULL, DEFAULT czy UNIQUE, są doklejane do definicji kolumny w kolejności wymaganej przez składnię danego silnika.
Najważniejsza zasada: generator nie łączy się z bazą i nie odczytuje aktualnego schematu. Pracuje wyłącznie na tekście, który wpiszesz. Z listy operacji buduje klauzule rozdzielone przecinkami i domyka całość średnikiem. Kolejność klauzul odpowiada kolejności na liście i nie jest zmieniana, bo odwołania do nazw kolumn w dalszych klauzulach dotyczą stanu po operacjach wcześniejszych. Jeśli najpierw zmieniasz nazwę kolumny, a potem modyfikujesz jej typ, w drugiej klauzuli musisz użyć już nowej nazwy.
Składnia poszczególnych operacji różni się między silnikami. MySQL zmienia definicję kolumny słowem MODIFY COLUMN, a PostgreSQL przebudowuje kolumnę serią klauzul ALTER COLUMN, na przykład TYPE, SET NOT NULL albo SET DEFAULT. Generator stosuje wariant zgodny z wybranym dialektem, a gotowy tekst wklejasz do konsoli, klienta bazy albo pliku migracji.
Przykład krok po kroku: cztery operacje w jednym zapytaniu
- Ustaw tabelę docelową: users. Ta nazwa pojawi się bezpośrednio po słowach ALTER TABLE.
- Dodaj pierwszą operację: ADD COLUMN email VARCHAR(255) NOT NULL. Wartość 255 to długość typu, którą wpisujesz ręcznie — narzędzie jej nie wylicza.
- Dodaj drugą operację: MODIFY COLUMN phone VARCHAR(20). Zmieniasz definicję istniejącej kolumny, nie dodajesz nowej.
- Dodaj trzecią operację: RENAME COLUMN email TO mail. Od tego momentu kolumna nazywa się mail i tak trzeba się do niej odwoływać w dalszej części zapytania.
- Dodaj czwartą operację: DROP COLUMN old_field, czyli usunięcie kolumny, której już nie używasz.
- Odczytaj wynik. Cztery operacje dają cztery klauzule, czyli trzy przecinki między nimi i jeden średnik na końcu: ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT NULL, MODIFY COLUMN phone VARCHAR(20), RENAME COLUMN email TO mail, DROP COLUMN old_field;
Tabela referencyjna: operacja a składnia w MySQL i PostgreSQL
| Operacja | MySQL | PostgreSQL |
|---|---|---|
| Dodanie kolumny | ALTER TABLE t ADD COLUMN c TYP | ALTER TABLE t ADD COLUMN c TYP |
| Zmiana definicji kolumny | ALTER TABLE t MODIFY COLUMN c TYP | ALTER TABLE t ALTER COLUMN c TYPE TYP |
| Usunięcie kolumny | ALTER TABLE t DROP COLUMN c | ALTER TABLE t DROP COLUMN c |
| Zmiana nazwy kolumny | ALTER TABLE t RENAME COLUMN a TO b | ALTER TABLE t RENAME COLUMN a TO b |
| Kolumna z wartością domyślną | ADD COLUMN c TYP DEFAULT w | ADD COLUMN c TYP DEFAULT w |
| Kolumna wymagana | ADD COLUMN c TYP NOT NULL | ADD COLUMN c TYP NOT NULL |
| Kilka operacji naraz | klauzule rozdzielone przecinkami | klauzule rozdzielone przecinkami |
Jak używać generatora bez przykrych niespodzianek
- Kolejność klauzul to nie kosmetyka — generator zachowuje kolejność z listy, więc zmianę nazwy kolumny ustaw wtedy, gdy dalsze operacje mają się już odwoływać do nowej nazwy.
- Jedna migracja, jeden cel — zamiast wrzucać do jednego zapytania wszystko, co zaległo w schemacie, rozbij pracę na mniejsze pliki. Łatwiej wtedy znaleźć krok, który zawiódł.
- Sprawdź nazwy przed uruchomieniem — generator niczego nie waliduje względem bazy, więc literówka w nazwie kolumny przejdzie do wyniku i dopiero silnik ją odrzuci.
- Poprzedź zmianę zapytaniem sprawdzającym — przed modyfikacją typu wykonaj SELECT na próbce danych, żeby zobaczyć, jak wyglądają wartości skrajne i czy konwersja nie obetnie treści.
- Trzymaj wygenerowany SQL w repozytorium — zapisany plik migracji jest jednocześnie dokumentacją zmian schematu i materiałem do odtworzenia środowiska od zera.
Czego generator nie zrobi za Ciebie
- Nie zna stanu Twojej bazy — nie sprawdzi, czy kolumna już istnieje, czy nie ma konfliktu nazw ani czy tabela w ogóle jest w tej bazie. Zakłada, że dane wejściowe są poprawne.
- Nie obsługuje wszystkich dialektów jednakowo — słowo MODIFY COLUMN istnieje w MySQL, ale w PostgreSQL odpowiednikiem jest ALTER COLUMN oraz TYPE. Wynik trzeba dopasować do konkretnego silnika.
- Nie tworzy migracji odwrotnej — generator produkuje tylko zapytanie w przód. Skrypt przywracający poprzedni stan schematu musisz przygotować sam.
- Nie analizuje danych w kolumnie — nie ostrzeże, że zmiana typu obetnie wartości albo że nowa kolumna NOT NULL bez wartości domyślnej zatrzyma się na istniejących wierszach.
Najczęstsze pytania
Czy MODIFY zachowuje dane?
Tak, o ile typ jest zgodny. Zmiana typu może jednak obciąć lub przekonwertować wartości — sprawdź to wcześniej.
Jak dodać kolumnę z wartością domyślną?
Dopisz DEFAULT wartość w definicji. Istniejące wiersze otrzymają tę wartość.
Czy ALTER jest transakcyjny?
W MySQL dla InnoDB większość operacji jest atomowa, ale całe ALTER może wymagać przebudowy tabeli. W PostgreSQL ALTER jest transakcyjny.
Czy generator obsługuje PostgreSQL?
Tak, o ile wybierzesz odpowiedni wariant składni. W PostgreSQL zmianę typu kolumny zapisuje się jako ALTER COLUMN c TYPE TYP, a nie przez MODIFY COLUMN znane z MySQL.
Jak dodać kilka kolumn jednym zapytaniem?
Dodaj kolejne operacje typu ADD COLUMN na liście. Generator połączy je przecinkami w jeden statement, więc baza wykona całość jako jedną zmianę struktury.
Czy można zmienić nazwę tabeli?
Narzędzie koncentruje się na kolumnach, więc operację RENAME COLUMN wykona poprawnie, ale zmianę nazwy samej tabeli trzeba dopisać ręcznie poza generatorem.
Jak zmienić typ kolumny w MySQL?
W MySQL użyj operacji MODIFY COLUMN z pełną nową definicją kolumny, razem z typem i długością. Sam typ bez reszty definicji może pominąć wcześniejsze atrybuty kolumny.
Czy zapytanie zadziała w SQLite?
Częściowo. SQLite ma ograniczony zestaw operacji ALTER TABLE i na starszych wersjach nie obsługuje usuwania ani zmiany nazwy kolumny, więc wynik trzeba zweryfikować przed uruchomieniem.