Tworzenie struktury bazy danych

W tym odcinku zaczynamy kurs SQL na bazie ksiegarnia. Poznasz zarządzanie strukturą tabel – dodawanie, zmiana nazwy i usuwanie kolumn. To jeden z najczęstszych typów zadań na egzaminie INF.03.


Baza ćwiczeniowa: ksiegarnia

Wszystkie odcinki kursu korzystają z jednej bazy. Plik do importu: ksiegarnia.sql.

Schemat bazy danych

Tabela Opis i relacje
autorzy Autorzy książek. Relacja 1:n z ksiazki (jeden autor – wiele książek).
kategorie Kategorie literackie. Relacja 1:n z ksiazki.
tagi Tagi/etykiety. Relacja n:m z ksiazki (przez tabelę ksiazka_tag).
ksiazki Główna tabela. Klucze obce do autorzy i kategorie. Pole autor_id może być NULL.
ksiazka_tag Tabela łącząca – relacja n:m między ksiazki a tagi.
klienci Klienci księgarni.
zamowienia Zamówienia klientów. Klucz obcy do klienci.
pozycje_zamowienia Pozycje w zamówieniu. Klucze obce do zamowienia i ksiazki.

Struktura tabel

Przykładowe dane

  • Autorzy: Mickiewicz, Sienkiewicz, Tokarczuk, Lem, Szymborska, King, Rowling, Orwell, Sapkowski, Pratchett
  • Kategorie: Powieść historyczna, Science Fiction, Poezja, Fantasy, Horror, Klasyka polska
  • Tagi: bestseller, nagroda Nobla, ekranizacja, lektura szkolna, seria, klasyk
  • Ceny książek: od 24,99 zł do 54,99 zł | Lata wydania: od 1823 do 1998
  • Klienci z miast: Warszawa, Kraków, Gdańsk, Poznań, Wrocław
  • Zamówienia o statusach: 'nowe', 'w trakcie', 'zrealizowane' (część bez daty_realizacji = NULL)

Zadanie 1: ALTER TABLE – dodawanie kolumny (ADD COLUMN)

  • Cel: Dodanie nowej kolumny do istniejącej tabeli – najczęstsze zadanie egzaminacyjne.

Wzorzec ogólny:

Przykłady:

Typ Zastosowanie
INT Liczba całkowita
TINYINT(1) Flaga 0/1 (tak/nie)
VARCHAR(n) Tekst do n znaków
TEXT Długi tekst
DATE Data
DECIMAL(m,d) Liczba z miejscami po przecinku

Wskazówka: Zapamiętaj słowo kluczowe COLUMN – jego brak to jeden z najczęstszych błędów na egzaminie. VARCHAR zawsze z rozmiarem: VARCHAR(100).


Zadanie 2: ALTER TABLE – zmiana nazwy kolumny (CHANGE COLUMN)

  • Cel: Zmiana nazwy istniejącej kolumny.

Wzorzec:

Przykład:

Analogia z egzaminu: „zmień w tabeli zapisy kolumnę Id_klienta na Id_sluchacza" – wzorzec identyczny.


Zadanie 3: ALTER TABLE – usuwanie kolumny (DROP COLUMN)

  • Cel: Usunięcie kolumny z tabeli.

Wzorzec:

Przykład:


Zadanie 4: CREATE TABLE – tworzenie nowej tabeli

  • Cel: Stworzenie nowej tabeli z kolumnami, ograniczeniami i kluczem obcym.

Pełny przykład:

Zadanie 5: INSERT INTO – wstawianie nowych rekordów

  • Cel: Wstawienie nowego rekordu do tabeli. Klucz główny (id) pomijamy – baza nada go automatycznie dzięki AUTO_INCREMENT.

Wzorzec:

Przykłady:

Wskazówka: Nie wpisujemy kolumny id – baza nadaje ją automatycznie. CURDATE() wstawia aktualną datę – wzorzec „zapytanie ma charakter uniwersalny"

Schemat klucza głównego – zawsze taki sam na egzaminie:

Element Znaczenie
INT UNSIGNED Liczba całkowita dodatnia
NOT NULL Nie może być pusta
AUTO_INCREMENT Wartość nadawana automatycznie
PRIMARY KEY Klucz główny

Najczęstsze błędy (kosztują punkty!)

  1. Brak słowa COLUMN po ADD / DROP / RENAME
  2. VARCHAR bez rozmiaru – zawsze podawaj VARCHAR(n), np. VARCHAR(100)
  3. Pominięcie UNSIGNED przy „liczba całkowita dodatnia"

materiały: link