Zadanie 5 — Zapoznanie z domyślnymi bazami i tabelami

Cel zadania

W tym zadaniu zagłębisz się w strukturę serwera MariaDB/MySQL, aby zrozumieć, co kryje się "pod maską". Nauczysz się identyfikować i rozumieć rolę domyślnych baz danych, które są niezbędne do prawidłowego funkcjonowania serwera. Poznasz fundamentalne polecenia SQL służące do nawigacji po schematach i tabelach. Dodatkowo, zapoznasz się z podstawowymi typami danych, takimi jak liczby, teksty czy daty, oraz zrozumiesz kluczową koncepcję wartości NULL i ograniczenia NOT NULL.

Scenariusz / opis zadania

Wyobraź sobie serwer baz danych jako wielką szafę z szufladami. Do tej pory nauczyłeś się, jak ją złożyć i zabezpieczyć. Teraz nadszedł czas, aby zajrzeć do środka i zrozumieć, jak jest zorganizowana. Odkryjesz, że serwer przechowuje nie tylko Twoje dane, ale również specjalne bazy systemowe, które zarządzają jego pracą. Twoim zadaniem jest zbadanie tych "metadanych". Zaczniesz od bazy mysql, która jest jak mózg serwera – przechowuje informacje o użytkownikach i ich uprawnieniach. Następnie przyjrzysz się information_schema, która działa jak szczegółowy spis treści całej szafy, opisując każdą bazę, tabelę i kolumnę. Zrozumiesz także rolę performance_schema, monitorującej wydajność serwera w czasie rzeczywistym. W trakcie tej eksploracji poznasz podstawowe typy danych, które są budulcem każdej tabeli. Dowiesz się, kiedy używać typu INT do przechowywania liczb całkowitych, VARCHAR do krótkich tekstów, a TEXT do długich opisów. Zrozumiesz różnicę między DATE a DATETIME oraz jak precyzyjnie przechowywać wartości pieniężne za pomocą DECIMAL. Na koniec zgłębisz fundamentalną koncepcję NULL, ucząc się, kiedy pole może pozostać puste, a kiedy musi zawierać wartość dzięki ograniczeniu NOT NULL.

Pomocnik wykonania

  1. Zaloguj się do serwera: Użyj jednego z klientów GUI z poprzedniego zadania (np. HeidiSQL) lub wiersza poleceń (mysql -u root -p), aby połączyć się z serwerem.
  2. Wyświetl listę baz danych: Pierwszym krokiem jest zorientowanie się, jakie bazy danych (schematy) istnieją na serwerze. Wykonaj polecenie:
    SHOW DATABASES;
  3. Omówienie baz systemowych:
  4. Wybierz bazę danych do pracy: Aby pracować z tabelami wewnątrz konkretnej bazy, musisz jej "użyć". Wybierzmy bazę mysql:
    USE mysql;
  5. Wyświetl listę tabel: Zobaczmy, jakie tabele znajdują się w bazie mysql:
    SHOW TABLES;
    Powinieneś zobaczyć listę tabel, w tym kluczową tabelę user.
  6. Opisz strukturę tabeli: Aby zobaczyć, z jakich kolumn i typów danych składa się tabela, użyj polecenia DESCRIBE (lub jego skrótu DESC):
    DESCRIBE user;
  7. Analiza struktury tabeli user: Zwróć uwagę na kolumny takie jak Host, User, Password (lub authentication_string). Zobaczysz, jakich typów danych użyto do ich przechowywania.
  8. Przeglądanie danych w information_schema: To potężne narzędzie. Spróbujmy dowiedzieć się czegoś o wszystkich tabelach na serwerze. Wykonaj zapytanie:
    SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'mysql';
  9. Podstawowe typy danych - omówienie:
    Typ danychOpisPrzykład użycia
    INTLiczby całkowite (np. -10, 0, 123). Idealny dla identyfikatorów (ID).id_uzytkownika INT
    VARCHAR(n)Ciąg znaków o zmiennej długości, do n znaków. Wydajny dla krótkich tekstów.imie VARCHAR(50)
    TEXTDługi tekst, np. artykuł, opis produktu.opis_produktu TEXT
    DATEData w formacie 'RRRR-MM-DD'.data_urodzenia DATE
    DATETIMEData i czas w formacie 'RRRR-MM-DD GG:MM:SS'.data_rejestracji DATETIME
    DECIMAL(p, s)Liczba dziesiętna o stałej precyzji. p - łączna liczba cyfr, s - liczba cyfr po przecinku. Niezbędny dla wartości finansowych.cena DECIMAL(10, 2)
    BOOLEAN (lub TINYINT(1))Wartość logiczna prawda/fałsz (1 lub 0).czy_aktywny BOOLEAN
  10. Koncepcja NULL vs NOT NULL:

Przykłady kodu i poleceń

Poniżej zestawienie poleceń do nawigacji i badania struktury bazy danych.

-- Wyswietlenie wszystkich dostepnych baz danych
SHOW DATABASES;

-- Wybranie bazy 'mysql' do dalszych operacji
USE mysql;

-- Wyswietlenie wszystkich tabel w biezacej bazie
SHOW TABLES;

-- Opisanie struktury tabeli 'user' (kolumny, typy danych)
DESCRIBE user;

-- Zaawansowane zapytanie do information_schema: znajdz wszystkie kolumny o nazwie 'Host'
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
FROM information_schema.COLUMNS
WHERE COLUMN_NAME = 'Host';
    

Ilustracja konsoli

+----------------------------------------------------------------+
|                                                                |
| MariaDB [mysql]> DESCRIBE user;                                |
| +-----------------------+------------------+------+-----+-----+ |
| | Field                 | Type             | Null | Key | ... | |
| +-----------------------+------------------+------+-----+-----+ |
| | Host                  | char(60)         | NO   | PRI | ... | |
| | User                  | char(80)         | NO   | PRI | ... | |
| | Password              | char(41)         | NO   |     | ... | |
| | ...                   | ...              | ...  | ... | ... | |
| +-----------------------+------------------+------+-----+-----+ |
| 45 rows in set (0.002 sec)                                     |
|                                                                |
+----------------------------------------------------------------+
    

Informacje dodatkowe / uwagi