Ćwiczenia SQL – Analiza i modyfikacja struktury bazy
1. Analizowanie struktury bazy danych
Polecenie: Wyświetl informacje o tabelach, kolumnach i kluczach w bazie projekty_it.
Użyj poleceń systemowych oraz zapytań do metadanych MySQL.
Po co to robisz?
Na egzaminie bardzo często najpierw dostajesz gotową bazę, a dopiero potem zadania typu „rozbuduj ją”.
Bez obejrzenia struktur (SHOW, DESCRIBE, INFORMATION_SCHEMA) łatwo coś popsuć.
-- Lista tabel w bazie
SHOW TABLES;
-- Szczegółowa struktura tabeli
DESCRIBE Projekty;
-- Klucze i relacje
SHOW CREATE TABLE Przydzialy;
-- Alternatywnie: zapytanie do INFORMATION_SCHEMA
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'projekty_it';
Efekt: Użytkownik widzi pełną strukturę bazy danych – nazwy tabel, kolumn, typy danych i klucze obce.
To pozwala na analizę istniejącego projektu przed jego modyfikacją.
2. Rozbudowa struktury bazy – nowe tabele, pola i relacje
Polecenie: Dodaj tabelę Klienci i połącz ją relacją z tabelą Projekty.
Rozszerz także tabelę Projekty o kolumnę id_klienta.
Jak o tym myśleć?
– Każdy projekt ma dokładnie jednego klienta → relacja 1:N (jeden klient, wiele projektów).
– Najpierw tworzysz tabelę „rodzica” (Klienci), dopiero potem dodajesz klucz obcy w tabeli Projekty.
CREATE TABLE Klienci (
id_klienta INT AUTO_INCREMENT PRIMARY KEY,
nazwa_firmy VARCHAR(80) NOT NULL,
miasto VARCHAR(50),
email VARCHAR(80)
);
ALTER TABLE Projekty
ADD COLUMN id_klienta INT,
ADD CONSTRAINT fk_klient
FOREIGN KEY (id_klienta) REFERENCES Klienci(id_klienta);
Tabela
Nowe pole
Relacja
Projekty
id_klienta
Klienci(id_klienta)
Uwaga egzaminacyjna:
– Jeżeli najpierw dodasz FOREIGN KEY do nieistniejącej tabeli rodzica, skrypt się wywali.
– Literówka w nazwie tabeli lub kolumny w definicji klucza obcego powoduje błąd i utratę punktów w zadaniu.
3. Usuwanie elementów struktury bazy danych
Polecenie: Usuń kolumnę email z tabeli Klienci oraz całą tabelę Przydzialy.
Zachowaj ostrożność – usuwanie jest nieodwracalne!
Najpierw zadaj sobie pytania:
– Czy kolumna email jest używana w aplikacji (np. w widokach, raportach)?
– Czy tabela Przydzialy nie ma powiązań jako klucz obcy w innych tabelach?
– Czy masz backup bazy lub pracujesz na kopii?
ALTER TABLE Klienci DROP COLUMN email;
DROP TABLE Przydzialy;
Efekt: Kolumna email została usunięta, a tabela Przydzialy całkowicie skasowana z bazy.
Operacje tego typu powinny być poprzedzone kopią bezpieczeństwa!
4. Modyfikowanie struktury bazy oraz danych (ALTER TABLE)
Polecenie: Dodaj nową kolumnę status do tabeli Projekty i ustaw wartość domyślną „Aktywny”.
Następnie zmień typ kolumny budzet na FLOAT.
Co potrafi ALTER TABLE?
To jedno polecenie służy do dodawania, usuwania i modyfikowania kolumn oraz ich typów i wartości domyślnych.
Na INF.03 bardzo często sprawdzane jest rozumienie ADD, DROP COLUMN, MODIFY.
ALTER TABLE Projekty
ADD COLUMN status VARCHAR(20) DEFAULT 'Aktywny',
MODIFY budzet FLOAT;
-- Aktualizacja danych
UPDATE Projekty
SET status = 'Zakończony'
WHERE data_rozpoczecia < '2024-12-31';
Nazwa projektu
Budżet (FLOAT)
Status
System CRM
120000
Zakończony
Aplikacja mobilna
80000
Aktywny
Częsty błąd:
– Zmiana typu na zbyt „wąski” (np. z DECIMAL na TINYINT) powoduje utratę części danych.
– Pomylenie ALTER TABLE z UPDATE (ALTER zmienia strukturę, UPDATE – dane).