CREATE TABLE [IF NOT EXISTS] nazwa_tabeli ( nazwa_kolumny1 TYP_DANYCH [atrybuty], nazwa_kolumny2 TYP_DANYCH [atrybuty], ... [ograniczenia_tabeli] ) [ENGINE=InnoDB] [DEFAULT CHARSET=utf8mb4];
-- Sposób 1: inline (dla jednokolumnowego PK) id INT AUTO_INCREMENT PRIMARY KEY -- Sposób 2: na końcu tabeli (zalecany) id INT AUTO_INCREMENT, PRIMARY KEY (id) -- Sposób 3: złożony PK (wiele kolumn) id_zamowienia INT, id_produktu INT, PRIMARY KEY (id_zamowienia, id_produktu)
| Atrybut | Znaczenie | Przykład |
|---|---|---|
NOT NULL | Kolumna musi mieć wartość — brak NULL | imie VARCHAR(50) NOT NULL |
NULL | Kolumna może być pusta (domyślne) | opis TEXT NULL |
DEFAULT wartość | Wartość domyślna gdy nie podano | aktywny BOOLEAN DEFAULT TRUE |
UNIQUE | Wartości muszą być unikalne w całej tabeli | email VARCHAR(200) UNIQUE |
AUTO_INCREMENT | Automatyczna numeracja (tylko INT, tylko PK) | id INT AUTO_INCREMENT |
UNSIGNED | Tylko liczby nieujemne (zwiększa zakres) | ilosc INT UNSIGNED |
COMMENT 'opis' | Komentarz dokumentujący kolumnę | cena DECIMAL COMMENT 'w PLN' |
DEFAULT CURRENT_TIMESTAMP | Bieżąca data/czas jako wartość domyślna | dodano TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
CREATE TABLE produkty ( id_produktu INT AUTO_INCREMENT PRIMARY KEY, kod_ean CHAR(13) UNIQUE, nazwa VARCHAR(200) NOT NULL, opis TEXT, cena DECIMAL(10,2) NOT NULL DEFAULT 0.00, ilosc_mag INT UNSIGNED NOT NULL DEFAULT 0, id_kategorii INT, aktywny BOOLEAN DEFAULT TRUE, dodano TIMESTAMP DEFAULT CURRENT_TIMESTAMP, zmieniono TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Tabela produktów sklepu';
-- Wyświetl strukturę tabeli DESCRIBE produkty; -- lub DESC produkty; SHOW COLUMNS FROM produkty; -- Wyświetl pełne polecenie CREATE TABLE (jak zostało stworzone) SHOW CREATE TABLE produkty; -- Wyświetl wszystkie tabele w bieżącej bazie SHOW TABLES; SHOW TABLES LIKE 'pro%';
Uzupełnij brakujące fragmenty polecenia CREATE TABLE:
Napisz kompletne polecenie CREATE TABLE pracownicy z kolumnami: id_pracownika (INT, PK, auto), imie (VARCHAR 50, NOT NULL), nazwisko (VARCHAR 100, NOT NULL), email (VARCHAR 200, UNIQUE), pensja (DECIMAL 10,2, domyślnie 0), data_zatrudnienia (DATE):
INT AUTO_INCREMENT PRIMARY KEY — standardowy klucz głównyNOT NULL — pole obowiązkowe | DEFAULT wartość — wartość domyślnaUNIQUE — unikalność w tabeli (może być NULL, w przeciwieństwie do PK)DECIMAL(10,2) — dla pieniędzy (nigdy FLOAT!) | UNSIGNED — tylko nieujemneDESCRIBE tabela; lub SHOW CREATE TABLE tabela; — sprawdź strukturę