INFORMATION_SCHEMA – czyli jak wyświetlić wszystkie tablice i kolumny w bazie danych mySQL

INFORMATION_SCHEMA – w mySQL możemy skorzystać ze specjalnego schematu information_schema zawierającego informacje o budowie naszych baz danych, tabelach, kolumnach, widokach i innych przydatnych informacjach. Jako, że w niniejszym artykule zajmować się będziemy tabelami i kolumnami omówię pokrótce: tables i columns.

INFORMATION_SCHEMA.TABLES – jest tak na prawdę tabelą zawierającą informację o tabelach w bazie danych takie między innymi jak: nazwa bazy danych z której pochodzi tabela, nazwa tabeli, rozmiar, czas utworzenia, kodowanie i inne informacje. Spójrzmy na przykład:

select * from information_schema.tables where table_schema='baza_danych';

select table_schema, table_name from information_schema.tables;

Powyższe polecenie (1) wyświetli nam informację o wszystkich tabelach w bazie danych o nazwie: baza_danych. Kolumna table_schema w tabeli: information_schema.tables zawiera nazwy baz danych, zaś table_name nazwy tabel. Jako że jest to zwykłe polecenie select możemy stosować klauzule where, np;

select table_schema, table_name from information_schema.tables 
where table_name like '%prac%';

Wyświetli nam listę baz danych oraz tabel w których została znaleziona nazwa tabeli zawierająca frazę: prac, czyli np. praca, pracownicy, zapracowani itp.

INFORMATION_SCHEMA.COLUMNS – również jest tabelą, która zawiera informację o kolumnach w bazie danych. Są to między innymi: nazwa bazy danych oraz tabeli z której pochodzi kolumna, nazwa kolumny, jej typ, rozmiar, kodowanie i inne informacje. Spójrzmy na przykład:

select * from information_schema.columns;

select table_schema, table_name, column_name from information_schema.columns;

Powyższe polecenie (1) wyświetli nam informację o wszystkich tabelach oraz szczegółowe informacje o wszystkich kolumnach we wszystkich bazach danych. Kolumna table_schema w tabeli: information_schema.columns zawiera nazwy baz danych, table_name nazwy tabel, a column_name nazwy kolumn, Również w powyższych zapytaniach sql możemy stosować klauzulę: where. Spójrzmy na przykłady:

select table_name, column_name from information_schema.columns
where table_schema='baza_danych'

Powyższe polecenie wyświetli nam wszystkie nazwy tabel i kolumn w bazie danych o nazwie: baza_danych.

select table_name from information_schema.columns
where table_schema='baza_danych' and column_name='pesel';

Powyższe polecenie wyświetli nam listę wszystkich tabel z bazy danych o nazwie: baza_danych zawierające kolumnę: pesel.