Dataczwartek, 13 sierpnia 2026 Czas18:35:52
← Zadania praktyczne

Zadanie 2: Sklep komputerowy — wypełnianie bazy danymi (INSERT)

Podstawowy

Po co się tego uczymy?

Pusta baza z Zadania 1 niewiele Ci powie — dopiero z danymi w środku będziesz mógł ćwiczyć prawdziwe zapytania w kolejnych zadaniach.

Treść zadania

Scenariusz: Masz gotową strukturę bazy sklep_komputerowy z Zadania 1, ale jest pusta jak nowa, nieużywana szafa. W prawdziwym sklepie internetowym baza danych nie jest tylko pustą strukturą — trzeba ją wypełnić produktami, klientami i kategoriami. W tym zadaniu nauczysz się dodawać dane w taki sposób, żeby baza zaczęła przypominać prawdziwy system.

Do wykonania:
1. Dodaj minimum 5 kategorii produktów.
2. Dodaj minimum 5 producentów.
3. Dodaj minimum 15 produktów, korzystając z różnych kategorii i producentów.
4. Dodaj minimum 8 klientów z unikalnymi adresami e-mail.
5. Sprawdź dane za pomocą zapytań SELECT z każdej tabeli.

Jak zabrać się do zadania

1. Upewnij się, że pracujesz w bazie sklep_komputerowy z Zadania 1 (USE sklep_komputerowy;).
2. Wypełniaj tabele w tej samej kolejności co przy tworzeniu: najpierw Kategorie i Producenci, potem Produkty (bo potrzebuje ich identyfikatorów), na końcu Klienci.
3. Po każdym INSERCIE zrób szybki SELECT * z danej tabeli, żeby upewnić się, że dane faktycznie się zapisały.
4. Jeśli INSERT do Produkty zwróci błąd o naruszeniu klucza obcego, sprawdź, czy podane id_kategorii i id_producenta rzeczywiście istnieją w odpowiednich tabelach.

Jak powinien wyglądać efekt

Po wykonaniu zadania SELECT * FROM Produkty; powinien pokazać coś w stylu:

+-------------+---------------------------+---------+---------------+
| id_produktu | nazwa                     | cena    | id_kategorii  |
+-------------+---------------------------+---------+---------------+
|           1 | Procesor Core i5-14600K   | 1499.00 |             1 |
|           2 | Procesor Ryzen 7 7800X3D  | 1899.00 |             1 |
|           3 | Karta graficzna RTX 4070  | 3299.00 |             2 |
...
+-------------+---------------------------+---------+---------------+
15 rows in set (0.00 sec)

Liczba w ostatnim wierszu ("15 rows in set") to Twój sygnał, że dane faktycznie się zapisały — jeśli widzisz "0 rows" albo błąd, coś poszło nie tak przy INSERT.

Typowe problemy i jak sobie z nimi poradzić

Naruszenie klucza obcego przy dodawaniu produktu. Co się stało: INSERT INTO Produkty zgłasza błąd "Cannot add or update a child row: a foreign key constraint fails". Dlaczego: podałeś id_kategorii albo id_producenta, którego nie ma w odpowiedniej tabeli. Jak naprawić: sprawdź SELECT * FROM Kategorie;, jakie identyfikatory faktycznie istnieją, i użyj jednego z nich.

Brak cudzysłowów przy tekście. Co się stało: INSERT INTO Kategorie (nazwa) VALUES (Procesory); zgłasza błąd składni. Dlaczego: SQL traktuje tekst bez cudzysłowów jako nazwę kolumny albo stałą liczbową. Jak naprawić: zawsze otaczaj tekst pojedynczym cudzysłowem: 'Procesory'.

Przecinek zamiast kropki w cenie. Co się stało: VALUES (..., 1499,00, ...) zgłasza błąd albo zapisuje złą wartość. Dlaczego: SQL (i MySQL) używa kropki jako separatora dziesiętnego, nie przecinka. Jak naprawić: zawsze pisz ceny z kropką: 1499.00.

Duplikat e-maila klienta. Co się stało: drugi INSERT z tym samym adresem e-mail zgłasza błąd "Duplicate entry ... for key". Dlaczego: kolumna email ma więz UNIQUE z Zadania 1 — to działa poprawnie. Jak naprawić: użyj innego adresu e-mail dla każdego klienta.

Nawiązanie do egzaminu zawodowego

Realizuje efekt INF.03.4.5.3 ("wprowadza dane do bazy danych") — a solidny zestaw danych testowych jest niezbędny do sensownego ćwiczenia zapytań w kolejnych zadaniach.

Kryteria sukcesu — sprawdź, czy wykonałeś zadanie poprawnie

Po wykonaniu zadania sprawdź, czy:
1. SELECT * FROM Kategorie; zwraca co najmniej 5 wierszy,
2. SELECT * FROM Producenci; zwraca co najmniej 5 wierszy,
3. SELECT * FROM Produkty; zwraca co najmniej 15 wierszy,
4. SELECT * FROM Klienci; zwraca co najmniej 8 wierszy,
5. żadna kolumna id_kategorii ani id_producenta w tabeli Produkty nie jest pusta (NULL),
6. w danych nie ma przypadkowych duplikatów (np. dwóch identycznych klientów).

Rozwiązanie — zajrzyj tu dopiero na końcu

To jest rozwiązanie wzorcowe. Zajrzyj tu dopiero wtedy, gdy samodzielnie spróbujesz wykonać zadanie. Nie kopiuj kodu bezmyślnie — przepisanie go ręcznie pomaga zapamiętać składnię i kolejność działań. Kod jest celowo zablokowany do kopiowania.