W budowie
CREATE TABLE, dobór typów danych i modyfikacja schematu (ALTER TABLE)

Część 13 · SQL: definicja danych (DDL) i struktura tabel — kurs PHP INF.03

Część 13 kursu PHP pod kątem INF.03: definicja danych (DDL), tworzenie tabel (CREATE TABLE), modyfikacja struktury (ALTER TABLE), dobór typów danych i ograniczenia NOT NULL.

  • 45 min
  • 16 slajdów
  • Notatki nauczyciela: N
  • Strona modułu: otwórz
Plan · 45 min

Co dziś robimy

  1. 12 minTworzenie tabeli i typy kolumn Każda kolumna może mieć ograniczenia: NOT NULL wymaga wartości, a DEFAULT podaje wartość…
  2. 12 minKlucze i automatyczny numer UNIQUE pilnuje, żeby wartości się nie powtarzały, ale nie tworzy klucza głównego — dobry…
  3. 12 minZmiana i usuwanie struktury DROP TABLE usuwa całą tabelę razem z danymi, a DROP DATABASE całą bazę.
  4. 4 minĆwiczenia 16 zadań w module — wybierz 3–4 na lekcję
  5. 5 minPodsumowanie bilet wyjściowy i zadanie domowe
Atom 1 z 4 · ~12 min

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.
Kod · atom 1 · ~3 min

Jak to wygląda w kodzie

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
);
Przykład na żywo · atom 1 · ~3 min

Uruchom i pokaż

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
);
Sprawdzenie · atom 1 · ~2 min

Pytanie do klasy

Który typ przechowuje tekst?

Atom 2 z 4 · ~12 min

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.
Kod · atom 2 · ~3 min

Jak to wygląda w kodzie

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)
);
Przykład na żywo · atom 2 · ~3 min

Uruchom i pokaż

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)
);
Sprawdzenie · atom 2 · ~2 min

Pytanie do klasy

Co robi AUTO_INCREMENT?

Atom 3 z 4 · ~12 min

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.
Kod · atom 3 · ~3 min

Jak to wygląda w kodzie

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;
Przykład na żywo · atom 3 · ~3 min

Uruchom i pokaż

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;
Sprawdzenie · atom 3 · ~2 min

Pytanie do klasy

Co robi ALTER TABLE?

Zamknięcie · ~3 min

Co zabrać z lekcji

  • Każda kolumna może mieć ograniczenia: NOT NULL wymaga wartości, a DEFAULT podaje wartość domyślną.
  • UNIQUE pilnuje, żeby wartości się nie powtarzały, ale nie tworzy klucza głównego — dobry wybór dla adresu e-mail albo loginu.
  • DROP TABLE usuwa całą tabelę razem z danymi, a DROP DATABASE całą bazę.
  • Ćwiczenia
Bilet wyjściowy: Jak dodać kolumnę?
Odpowiedź: b) ALTER TABLE ADD
Hyżyk· Część 13 · SQL: definicja danych (DDL) i struktura tabel — k moduł 1 / 1