biblioteka) - to cała szafa na dokumenty. Jest to kontener, w którym będziemy przechowywać wszystkie nasze uporządkowane informacje.czytelnicy) - to pojedynczy segregator w szafie, przeznaczony na konkretny rodzaj informacji (np. dane o czytelnikach, osobny segregator na książki).imię, nazwisko) - to etykiety rubryk na kartach w segregatorze. Określają, jakiego rodzaju informację przechowujemy w danym polu (np. "Imię", "Nazwisko", "Adres").W tym zadaniu najpierw stworzymy naszą "szafę" (CREATE DATABASE), a następnie włożymy do niej pierwszy "segregator" (CREATE TABLE).
Celem tego ćwiczenia jest praktyczne stworzenie Twojej pierwszej bazy danych i tabeli. Nauczysz się kluczowych poleceń języka SQL i zrozumiesz fundamentalne pojęcia, takie jak klucz podstawowy, atrybut AUTO_INCREMENT oraz typy danych. Celowo stworzymy tabelę, która nie jest idealna, aby w przyszłości nauczyć się ją poprawiać. Na koniec zaimportujemy do niej dane z pliku.
Zaloguj się do serwera MariaDB za pomocą HeidiSQL. W oknie zapytań wpisz i wykonaj poniższe polecenia.
-- Tworzymy nową bazę danych (naszą "szafę")
CREATE DATABASE biblioteka CHARACTER SET utf8mb4 COLLATE utf8mb4_polish_ci;
-- Mówimy serwerowi, że od teraz chcemy pracować wewnątrz tej bazy
USE biblioteka;
  
  CREATE DATABASE biblioteka: To polecenie tworzy nowy, pusty kontener na dane o nazwie "biblioteka".CHARACTER SET utf8mb4: Określa sposób kodowania znaków. utf8mb4 to nowoczesny standard, który pozwala przechowywać polskie znaki (ą, ę, ć...), a także emotikony 😉.COLLATE utf8mb4_polish_ci: Określa zasady sortowania tekstu. Dzięki temu ustawieniu, serwer będzie poprawnie sortował polskie słowa (np. "Łukasz" będzie blisko "Lucjan", a nie na końcu alfabetu). Końcówka _ci oznacza case-insensitive, czyli wielkość liter nie ma znaczenia przy porównywaniu.USE biblioteka: To jak otworzenie właściwej szuflady przed włożeniem do niej dokumentów. Od tego momentu wszystkie polecenia (jak tworzenie tabeli) będą wykonywane w kontekście bazy "biblioteka".Teraz stworzymy nasz pierwszy "segregator". Nazwa _denormalized jest celowa – oznacza, że tabela jest zaprojektowana w sposób, który ułatwia import "brudnych" danych, ale nie jest optymalna. Będziemy ją poprawiać w kolejnych zadaniach.
CREATE TABLE czytelnicy_denormalized (
  id INT AUTO_INCREMENT PRIMARY KEY,
  dane_osobowe VARCHAR(255) NOT NULL,
  adres_zamieszkania TEXT NULL,
  zainteresowania VARCHAR(255) NULL,
  wypozyczenia TEXT NULL
);
  
  id INT AUTO_INCREMENT PRIMARY KEY:
        id: Nazwa kolumny.INT: Typ danych - będzie przechowywać liczby całkowite.AUTO_INCREMENT: Serwer sam będzie nadawał kolejny numer każdemu nowemu czytelnikowi (1, 2, 3...).PRIMARY KEY: To najważniejsza kolumna. Działa jak numer PESEL – jednoznacznie identyfikuje każdy wiersz i nie może być pusta.dane_osobowe VARCHAR(255) NOT NULL:
        VARCHAR(255): Typ danych dla krótkich tekstów (do 255 znaków). Idealny na imię i nazwisko.NOT NULL: To ograniczenie oznacza, że to pole jest wymagane. Nie można dodać czytelnika bez podania jego danych osobowych.adres_zamieszkania TEXT NULL:
        TEXT: Typ danych dla długich tekstów, bez limitu 255 znaków.NULL: To pole jest opcjonalne. Czytelnik nie musi podawać adresu. NULL to specjalna wartość oznaczająca "brak danych".Skąd wiemy, że tabela została utworzona poprawnie? Możemy to sprawdzić dwoma poleceniami.
-- Pokaż listę wszystkich tabel w bieżącej bazie danych
SHOW TABLES;
-- Pokaż szczegółową strukturę naszej nowej tabeli
DESCRIBE czytelnicy_denormalized;
  
  Drugie polecenie (DESCRIBE) jest niezwykle przydatne. Jego wynik pokaże nam listę kolumn, ich typy danych, informację, czy mogą być puste (NULL) oraz która z nich jest kluczem głównym (Key: PRI).
Ręczne dodawanie 50 czytelników byłoby bardzo żmudne. Dlatego przygotowaliśmy plik .sql, który zawiera serię poleceń INSERT. Zaimportujemy go za pomocą wiersza poleceń.
INSERT INTO... z pliku źródłowego do nowego pliku tekstowego. Zapisz go na Pulpicie pod nazwą import_czytelnikow.sql.
mysql -u root -p biblioteka < C:\Users\TwojaNazwaUzytkownika\Desktop\import_czytelnikow.sql
      
      root. Wpisz je i naciśnij Enter. Jeśli nie pojawią się żadne błędy, dane zostały zaimportowane.mysql: Uruchamia program klienta wiersza poleceń.-u root -p: Loguje się jako użytkownik root i prosi o hasło.biblioteka: Określa, do której bazy danych mają trafić dane.<: To tzw. "przekierowanie wejścia". Mówi systemowi: "weź zawartość pliku po prawej stronie i przekaż ją jako dane wejściowe do programu po lewej". W ten sposób klient mysql wykonuje wszystkie polecenia z pliku import_czytelnikow.sql.Na koniec sprawdźmy, czy dane faktycznie znajdują się w tabeli.
-- Wybierz wszystkie kolumny (*) z naszej tabeli, ale pokaż tylko 5 pierwszych wierszy
SELECT * FROM czytelnicy_denormalized LIMIT 5;
  
  W wyniku zobaczysz tabelę wypełnioną danymi. Zwróć uwagę, jak niepraktyczna jest taka struktura. Jeśli chcielibyśmy znaleźć wszystkich czytelników zainteresowanych "Fantastyką", musielibyśmy przeszukiwać tekst w kolumnie zainteresowania. To wolne i nieefektywne.
Gratulacje! Stworzyłeś swoją pierwszą bazę danych, tabelę i zaimportowałeś do niej dane. Nauczyłeś się kluczowych poleceń DDL (CREATE) i DML (INSERT, SELECT).
Zauważyłeś też, że nasza tabela jest źle zaprojektowana. Przechowywanie wielu informacji w jednym polu (np. imię i email w dane_osobowe) to tzw. naruszenie Pierwszej Postaci Normalnej (1NF). W kolejnych zadaniach nauczymy się, jak to naprawić, dzieląc tę dużą tabelę na kilka mniejszych, logicznie powiązanych tabel. Ten proces nazywa się normalizacją.