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.
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.
mysql -u root -p), aby połączyć się z serwerem.information_schema: Wirtualna baza danych, która zawiera informacje o wszystkich innych bazach, tabelach, kolumnach, uprawnieniach itp. Jest to standard ANSI SQL. Można z niej odczytywać dane, ale nie można ich modyfikować.mysql: "Mózg" serwera. Przechowuje tabele z informacjami o użytkownikach, ich hasłach, uprawnieniach, rolach i innych danych operacyjnych. Modyfikacja tej bazy jest możliwa, ale wymaga dużej ostrożności.performance_schema: Narzędzie do monitorowania wydajności serwera na niskim poziomie. Gromadzi dane statystyczne o wykonanych zapytaniach, użyciu zasobów itp. Zazwyczaj używane przez zaawansowanych administratorów.sys: (W nowszych wersjach) Schemat, który dostarcza bardziej czytelnych widoków na dane z performance_schema, ułatwiając diagnozowanie problemów z wydajnością.mysql:
            mysql:
            user.
        DESCRIBE (lub jego skrótu DESC):
            user: Zwróć uwagę na kolumny takie jak Host, User, Password (lub authentication_string). Zobaczysz, jakich typów danych użyto do ich przechowywania.information_schema: To potężne narzędzie. Spróbujmy dowiedzieć się czegoś o wszystkich tabelach na serwerze. Wykonaj zapytanie:
            | Typ danych | Opis | Przykład użycia | 
|---|---|---|
INT | Liczby 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) | 
TEXT | Długi tekst, np. artykuł, opis produktu. | opis_produktu TEXT | 
DATE | Data w formacie 'RRRR-MM-DD'. | data_urodzenia DATE | 
DATETIME | Data 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 | 
NULL vs NOT NULL:
            NULL: To nie jest zero ani pusty ciąg znaków. NULL oznacza "brak wartości" lub "nieznaną wartość". Pole zdefiniowane jako NULL (domyślnie) może pozostać puste.NOT NULL: To ograniczenie (constraint), które wymusza, aby kolumna zawsze zawierała jakąś wartość. Próba wstawienia wiersza bez wartości dla takiej kolumny zakończy się błędem. Jest to kluczowe dla integralności danych, np. każdy użytkownik musi mieć login.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';
+----------------------------------------------------------------+
|                                                                |
| 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)                                     |
|                                                                |
+----------------------------------------------------------------+
    
    VARCHAR(255) na imię jest marnotrawstwem, a przechowywanie ceny jako FLOAT może prowadzić do błędów zaokrągleń. Zawsze wybieraj najmniejszy typ, który spełnia wymagania.information_schema jako narzędzie dewelopera: Możesz używać tej bazy do pisania skryptów, które np. automatycznie generują dokumentację bazy danych lub sprawdzają spójność nazewnictwa kolumn w całym projekcie.mysql, performance_schema czy sys za pomocą poleceń UPDATE czy DELETE. Do zarządzania użytkownikami i uprawnieniami służą dedykowane polecenia jak GRANT, REVOKE, CREATE USER.