Generator SQL CREATE TABLE
Szybko zbuduj tabelę w bazie
-
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 CREATE TABLE
Definiowanie tabeli w SQL bywa żmudne. Wpisz kolumny w prostym formacie, a generator złoży gotowe zapytanie dla MySQL lub MariaDB.
Format kolumny
Każda linia to nazwa TYP ograniczenia, na przykład:
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT email VARCHAR(255) NOT NULL UNIQUE created_at TIMESTAMP NULL
Wiersze rozpoczynające się od PRIMARY, UNIQUE, KEY lub CONSTRAINT zostaną wstawione bez zmian.
Silnik i charset
Domyślnie używamy InnoDB oraz utf8mb4 z porównywaniem utf8mb4_unicode_ci. To bezpieczny wybór zapewniający obsługę emoji i pełnego Unicode.
Dobre praktyki
- Klucz główny jako liczba całkowita z AUTO_INCREMENT.
- Pola tekstowe z ograniczeniem długości (VARCHAR).
- Kolumny
created_atiupdated_atdo śledzenia zmian. - Indeksy na kolumnach często używanych w zapytaniach.
Jak generator składa zapytanie CREATE TABLE
Narzędzie działa jak prosty parser linia po linii. Każdy wiersz jest traktowany jako osobny token wejściowy. Pierwszy wyraz w wierszu to nazwa kolumny lub słowo kluczowe: PRIMARY, UNIQUE, KEY albo CONSTRAINT. Reszta wiersza to definicja — typ danych i ewentualne ograniczenia, takie jak NOT NULL, AUTO_INCREMENT czy UNIQUE.
Jeśli wiersz zaczyna się od PRIMARY, UNIQUE, KEY lub CONSTRAINT, generator wstawia go do sekcji definicji tabeli bez żadnych zmian. W przeciwnym razie pierwszy token staje się nazwą kolumny, a pozostałe tokeny — typem i ograniczeniami. Nie ma tu żadnej magii: generator nie sprawdza, czy typ istnieje w MySQL, ani czy nazwa kolumny nie jest słowem zarezerwowanym. Po prostu skleja tekst w poprawną składniowo całość.
Na końcu doklejane są domyślne ustawienia silnika i kodowania: ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4, COLLATE=utf8mb4_unicode_ci. Kolejność kolumn w wyniku odpowiada kolejności wierszy na wejściu. Klucze i ograniczenia trafiają do wynikowego zapytania w takiej samej kolejności, w jakiej zostały wpisane. Warto więc najpierw wypisać kolumny, a dopiero potem klucze i constrainty.
Przykład: tabela users krok po kroku
- W polu tekstowym wpisujemy pierwszą kolumnę: id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT. Generator rozpoznaje nazwę id i resztę jako definicję typu oraz ograniczeń.
- Dodajemy drugą kolumnę: email VARCHAR(255) NOT NULL UNIQUE. Nazwa to email, typ VARCHAR o długości 255 znaków, ograniczenia NOT NULL i UNIQUE.
- Trzecia kolumna: created_at TIMESTAMP NULL. To znacznik czasu, który może pozostać pusty.
- Dopisujemy klucz główny: PRIMARY KEY (id). Wiersz zaczyna się od PRIMARY, więc zostanie wstawiony bez zmian.
- Uruchamiamy generator. Otrzymujemy zapytanie: CREATE TABLE users ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, email VARCHAR(255) NOT NULL UNIQUE, created_at TIMESTAMP NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- Podsumowanie: powstały 3 kolumny, 1 klucz główny oraz 1 indeks unikalny wynikający z UNIQUE przy kolumnie email. Łącznie daje to 5 elementów definicji tabeli.
Jak generator interpretuje poszczególne wiersze
| Wiersz wejściowy | Co robi generator | Wynik w CREATE TABLE |
|---|---|---|
| id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT | Rozpoznaje nazwę id, resztę traktuje jako typ i ograniczenia | id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT |
| email VARCHAR(255) NOT NULL UNIQUE | Tworzy kolumnę email z typem VARCHAR(255), NOT NULL i UNIQUE | email VARCHAR(255) NOT NULL UNIQUE |
| created_at TIMESTAMP NULL | Tworzy kolumnę created_at z typem TIMESTAMP i możliwością NULL | created_at TIMESTAMP NULL |
| PRIMARY KEY (id) | Wiersz zaczyna się od PRIMARY — wstawiany bez zmian | PRIMARY KEY (id) |
| UNIQUE KEY email_UNIQUE (email) | Wiersz zaczyna się od UNIQUE — wstawiany bez zmian | UNIQUE KEY email_UNIQUE (email) |
| KEY idx_created_at (created_at) | Wiersz zaczyna się od KEY — wstawiany bez zmian | KEY idx_created_at (created_at) |
| CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) | Wiersz zaczyna się od CONSTRAINT — wstawiany bez zmian | CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) |
| (domyślne) | Generator dokleja silnik i kodowanie na końcu | ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
Praktyczne wskazówki przed wygenerowaniem tabeli
- Najpierw kolumny, potem klucze. Generator zachowuje kolejność wierszy. Jeśli wstawisz klucz obcy przed kolumną, do której się odwołuje, składnia nadal będzie poprawna, ale trudniej ją czytać. Trzymaj porządek: najpierw wszystkie kolumny, na końcu PRIMARY KEY, UNIQUE, KEY i CONSTRAINT.
- Nazywaj kolumny jednolicie. Wybierz konwencję, na przykład snake_case, i stosuj ją w całym projekcie. Generator nie poprawi literówek ani niespójności — zrobi dokładnie to, co wpiszesz.
- Ustawiaj NOT NULL i wartości domyślne świadomie. Dla kolumn wymaganych dodaj NOT NULL, dla opcjonalnych — NULL. Pamiętaj, że generator nie sprawdza, czy kolumna NOT NULL ma DEFAULT, co w MySQL może być wymagane w niektórych trybach.
- Indeksuj kolumny filtrowane i łączone. Dodaj KEY lub UNIQUE dla kolumn używanych w WHERE, JOIN i ORDER BY. Zbyt wiele indeksów spowalnia zapisy, więc kieruj się realnymi zapytaniami.
- Testuj na kopii bazy. Wygenerowane CREATE TABLE uruchom najpierw w środowisku testowym. Sprawdź, czy typy i ograniczenia odpowiadają danym, które chcesz przechowywać.
Czego generator nie zrobi i co może zaburzyć wynik
- Nie waliduje składni SQL. Narzędzie skleja wiersze, ale nie sprawdza, czy typ kolumny istnieje w MySQL/MariaDB ani czy nawiasy są domknięte. Błąd składniowy przeniesie się do wyniku.
- Nie zna słów zarezerwowanych. Jeśli nazwiesz kolumnę np. order lub select, generator nie doda backticków. Zapytanie może się nie wykonać, dopóki sam nie otoczysz nazwy znakami `.`.
- Nie wykrywa duplikatów i konfliktów. Dwie kolumny o tej samej nazwie albo dwa klucze główne przejdą przez generator bez ostrzeżenia. MySQL odrzuci takie CREATE TABLE dopiero przy wykonaniu.
- Nie zarządza kolejnością kluczy obcych. Jeśli tabela odwołuje się do innej tabeli, musisz sam zadbać, aby tabela nadrzędna istniała wcześniej. Generator nie tworzy migracji ani nie sprawdza zależności między tabelami.
Najczęstsze pytania
Czym różni się InnoDB od MyISAM?
InnoDB wspiera transakcje, klucze obce i odzyskiwanie po awarii — jest domyślnym i zalecanym silnikiem.
Dlaczego utf8mb4, a nie utf8?
W MySQL „utf8” obsługuje tylko 3 bajty i nie mieści emoji. utf8mb4 to pełny UTF-8.
Czy mogę dodać klucz obcy?
Tak — wpisz wiersz zaczynający się od CONSTRAINT z definicją FOREIGN KEY. Zostanie wstawiony bez zmian.
Jak wygenerować zapytanie CREATE TABLE dla MySQL?
Wpisz kolumny w formacie nazwa TYP ograniczenia, dodaj klucze w osobnych wierszach i skopiuj wynik. Generator domyślnie ustawi silnik InnoDB oraz kodowanie utf8mb4.
Czy generator obsługuje MariaDB?
Tak, składnia CREATE TABLE w MariaDB jest w praktyce zgodna z MySQL dla typów i silników użytych w narzędziu. Domyślne ustawienia InnoDB i utf8mb4 również działają w MariaDB.
Jak dodać klucz obcy w CREATE TABLE?
Wpisz wiersz zaczynający się od CONSTRAINT, na przykład CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id). Generator wstawi go bez zmian.
Co oznacza COLLATE utf8mb4_unicode_ci?
To sposób porównywania tekstów: wielkość liter nie ma znaczenia (ci = case insensitive), a reguły sortowania są zgodne z Unicode. Domyślnie używamy tego zestawu dla pełnej obsługi emoji i znaków spoza ASCII.
Czy mogę wkleić gotowy CREATE TABLE i coś zmienić?
Narzędzie przyjmuje format linia po linii, a nie cały blok SQL. Jeśli wkleisz gotowe CREATE TABLE, potraktuj je jako źródło i przepisz definicje kolumn do osobnych wierszy. Wtedy generator złoży nową wersję.