W budowie
Materiał edukacyjny · Informatyka CREATE TABLE, dobór typów danych i modyfikacja schematu (ALTER TABLE)

CZĘŚĆ 13

SQL: definicja danych (DDL) i struktura tabel

PPrezentacja dla nauczyciela

Zanim zapiszesz dane z formularza, musisz przygotować dla nich odpowiednie miejsce. Dobór typów kolumn (INT, VARCHAR, DECIMAL, DATE), klucza głównego i ograniczeń NOT NULL to fundament bezbłędnej bazy na egzaminie INF.03.

Tworzenie tabeli i typy kolumn

Tabelę tworzy polecenie CREATE TABLE. W nawiasie wymieniamy kolumny z typami: INT dla liczb całkowitych, VARCHAR(50) dla tekstu o ograniczonej długości, DATE dla daty.

Każda kolumna może mieć ograniczenia: NOT NULL wymaga wartości, a DEFAULT podaje wartość domyślną. Dobrze dobrany typ oszczędza miejsce i chroni przed błędnymi danymi.

Nazwy tabel i kolumn piszemy bez polskich znaków i spacji — najlepiej małymi literami z podkreśleniem. Dzięki temu zapytania działają tak samo na każdym serwerze.

CREATE TABLE uczniowie (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    imie VARCHAR(50) NOT NULL,
    klasa VARCHAR(10) NOT NULL,
    punkty INT NOT NULL DEFAULT 0,
    data_dodania DATE
);
1. Który typ przechowuje tekst?
2. Co wymusza NOT NULL?
3. Po co DEFAULT w kolumnie?

Klucze i automatyczny numer

PRIMARY KEY wskazuje kolumnę jednoznacznie identyfikującą wiersz. Zwykle jest to id z typem INT i cechą AUTO_INCREMENT, więc baza sama nada kolejny numer.

UNIQUE pilnuje, żeby wartości się nie powtarzały, ale nie tworzy klucza głównego — dobry wybór dla adresu e-mail albo loginu. Klucz główny jest tylko jeden, unikalnych indeksów może być kilka.

FOREIGN KEY łączy tabele i pilnuje spójności: nie da się dodać ucznia z klasą, której nie ma. W zadaniach egzaminacyjnych często wystarczy sam klucz główny i kolumna łącząca.

CREATE TABLE klasy (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nazwa VARCHAR(10) NOT NULL UNIQUE
);

CREATE TABLE uczniowie (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    imie VARCHAR(50) NOT NULL,
    klasa_id INT UNSIGNED NOT NULL,
    FOREIGN KEY (klasa_id) REFERENCES klasy(id)
);
4. Co robi AUTO_INCREMENT?
5. Ile kluczy głównych może być?
6. Do czego służy FOREIGN KEY?

Zmiana i usuwanie struktury

ALTER TABLE zmienia istniejącą tabelę: dodaje kolumnę, zmienia typ albo dopisuje indeks. To najbezpieczniejszy sposób poprawy struktury, bo nie kasuje danych.

DROP TABLE usuwa całą tabelę razem z danymi, a DROP DATABASE całą bazę. Na egzaminie trzeba uważać, żeby nie pomylić DELETE (usuwa wiersze) z DROP (usuwa strukturę).

Przed zmianą struktury warto zrobić kopię zapasową. W zadaniach szkolnych wystarczy świadomość, że operacje DDL są nieodwracalne.

ALTER TABLE uczniowie ADD email VARCHAR(80);
ALTER TABLE uczniowie MODIFY klasa VARCHAR(15) NOT NULL;
ALTER TABLE uczniowie ADD INDEX idx_klasa (klasa);

-- usuniecie niepotrzebnej kolumny
ALTER TABLE uczniowie DROP COLUMN email;
7. Co robi ALTER TABLE?
8. Czym różni się DROP od DELETE?
9. Jak dodać kolumnę?

Ćwiczenia