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
);
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)
);
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;
Ćwiczenia
- 1Podstawowe CREATE TABLEpierwsza tabela CREATE TABLEZadanie i podpowiedzi →
- 2Bezpieczne tworzenie z IF NOT EXISTSbezpieczne IF NOT EXISTSZadanie i podpowiedzi →
- 3Klucz główny i AUTO_INCREMENTklucz główny AUTO_INCREMENTZadanie i podpowiedzi →
- 4Dobór typu tekstowego: VARCHAR vs TEXTtypy tekstowe VARCHAR i TEXTZadanie i podpowiedzi →
- 5Liczby całkowite i ułamkowe: INT i DECIMALkwoty i ceny DECIMALZadanie i podpowiedzi →
- 6Daty i czas: DATE i DATETIMEdaty DATE i DATETIMEZadanie i podpowiedzi →
- 7Wartości logiczne i statusy: TINYINT(1)flagi logiczne TINYINTZadanie i podpowiedzi →
- 8Ograniczenie NOT NULLwymuszone pole NOT NULLZadanie i podpowiedzi →
- 9Wartość początkowa DEFAULTwartość początkowa DEFAULTZadanie i podpowiedzi →
- 10Klucz obcy w schemacie tabeliklucz obcy w schemacieZadanie i podpowiedzi →
- 11Badanie struktury tabeli DESCRIBEbadanie struktury DESCRIBEZadanie i podpowiedzi →
- 12Dodanie kolumny ALTER TABLE ADDdodanie kolumny ALTER ADDZadanie i podpowiedzi →
- 13Zmiana typu kolumny ALTER TABLE MODIFYzmiana typu ALTER MODIFYZadanie i podpowiedzi →
- 14Usunięcie kolumny ALTER TABLE DROPusunięcie kolumny ALTER DROPZadanie i podpowiedzi →
- 15Bezpieczne usuwanie tabeli DROP TABLEusunięcie tabeli DROP TABLEZadanie i podpowiedzi →
- 16Skrypt instalacyjny bazy danych w PHPinstalator bazy danych w PHPZadanie i podpowiedzi →