- 1 Co je „schéma“ v MySQL? (Terminologie a základní pojmy)
- 2 [Basics] Jak zkontrolovat schémata MySQL (seznam, přepínání, tabulky)
- 3 [Advanced] Získávání podrobných informací pomocí INFORMATION_SCHEMA
- 4 [Expert] Using InnoDB Metadata and the sys Schema (MySQL 8.0+)
- 5 [Quick Reference by Use Case] Doporučené příkazy
- 6 [Troubleshooting and Error Handling]
- 7 FAQ (Často kladené otázky)
- 7.1 Q1. Jak se liší schéma MySQL od schémat v Oracle nebo PostgreSQL?
- 7.2 Q2. Jaký je nejefektivnější způsob, jak získat podrobné informace o sloupcích?
- 7.3 Q3. Jak mohu zkontrolovat znakovou sadu nebo kolaci?
- 7.4 Q4. Nemám oprávnění zobrazit informace. Co mám dělat?
- 7.5 Q5. Jak zkontrolovat informace o schématu v GUI nástrojích?
- 8 Závěr a související odkazy
Co je „schéma“ v MySQL? (Terminologie a základní pojmy)
Mnoho začátečníků, kteří právě začali používat MySQL, nebo kteří přecházejí z jiných databázových systémů, často narazí na pojem „schéma“. I když se slovo „schéma“ používá v různých databázích, jeho význam se může lišit podle konkrétního systému. Je důležité si to od začátku ujasnit.
Původně „schéma“ označuje „strukturu“ nebo „plán“. V kontextu relačních systémů pro správu databází (RDBMS) se obvykle jedná o celou strukturu definovanou v databázi, včetně nastavení tabulek, informací o sloupcích, indexů, pohledů, uložených procedur a dalších.
V MySQL jsou však pojmy „schéma“ a „databáze“ považovány za téměř totožné. Oficiální dokumentace MySQL jasně uvádí, že „schéma = databáze“ a oba termíny jsou používány zaměnitelně. Například při vytváření schématu použijete příkaz CREATE DATABASE.
V jiných RDBMS, jako jsou Oracle a PostgreSQL, jsou „schéma“ a „databáze“ jasně odlišeny:
- Oracle: Schéma je kolekce objektů spravovaných podle uživatele. Databáze je fyzický kontejner a v ní může existovat více schémat.
- PostgreSQL: Jedna databáze může obsahovat více schémat (jmenných prostorů), což umožňuje klasifikaci a správu tabulek a pohledů.
Naopak v MySQL platí „databáze“ = „schéma“. Bez ohledu na to, který termín je v popisech použit, zůstávají operace a způsoby správy stejné. Proto „kontrola schémat“ v MySQL v podstatě znamená „kontrola databází“.
V anglické dokumentaci se objevují oba výrazy a manuály MySQL je někdy používají zaměnitelně. V praxi, když v dokumentaci MySQL narazíte na „schéma“, můžete jej interpretovat jako „databázi“.
Správným pochopením specifického používání terminologie v MySQL můžete předejít záměně při správě systémů nebo při čtení technické dokumentace. V následující sekci podrobně vysvětlíme, jak krok za krokem kontrolovat schémata (databáze) v MySQL.
[Basics] Jak zkontrolovat schémata MySQL (seznam, přepínání, tabulky)
Aby bylo možné pochopit obsah „schématu (databáze)“ v MySQL, je důležité znát základní příkazy a postupy. V této sekci podrobně vysvětlujeme běžné operace – od výpisu schémat po kontrolu tabulek a informací o sloupcích. I začátečníci to zvládnou.
Výpis schémat (databází)
V MySQL můžete na serveru vytvořit více databází (schémat).
Pro zobrazení jejich seznamu použijte následující příkaz:
SHOW DATABASES;
Po spuštění tento příkaz zobrazí názvy všech schémat (databází) na serveru. V některých prostředích můžete také použít SHOW SCHEMATA;, což dává stejný výsledek jako SHOW DATABASES;. Pokud vás zajímají rozdíly mezi verzemi, podívejte se do oficiálního manuálu.
Přepnutí aktivního schématu
Pro práci s konkrétním schématem (databází) jej nejprve musíte vybrat.
Pro přepnutí schématu použijte:
USE database_name;
Například pro použití schématu s názvem sample_db zadejte:
USE sample_db;
Všechny následující operace se pak budou vztahovat k tomuto vybranému schématu (databázi).
Kontrola struktury tabulek a sloupců
Každé schéma obsahuje více tabulek.
Pro jejich výpis použijte:
SHOW TABLES;
Tento příkaz zobrazí všechny názvy tabulek ve právě vybraném schématu.
Pro prozkoumání struktury konkrétní tabulky (názvy sloupců, datové typy, nastavení NULL atd.) použijte jeden z následujících příkazů:
DESCRIBE table_name;
nebo
SHOW COLUMNS FROM table_name;
Oba příkazy vrací téměř identické výsledky. Například pro kontrolu struktury sloupců tabulky users zadejte:
DESCRIBE users;
Kontrola podrobných nastavení schématu
Pokud chcete zkontrolovat specifická nastavení schématu, jako je znaková sada a kolace, použijte:
SHOW CREATE DATABASE database_name;
This command outputs the SQL statement used to create the schema (database). It is particularly useful for verifying character encoding and collation settings to prevent configuration-related issues.
Key Points
- All basic inspection tasks can be performed using standard MySQL commands.
- The results are displayed directly in the terminal (command line), allowing you to proceed efficiently.
- Most tasks can also be performed using GUI tools such as MySQL Workbench or phpMyAdmin, but CLI commands are often more reliable when troubleshooting.
The commands introduced in this section are fundamental knowledge for anyone who works with MySQL regularly.
[Advanced] Získávání podrobných informací pomocí INFORMATION_SCHEMA
While basic MySQL commands allow you to check schema and table structures, more detailed information or bulk extraction is best handled using INFORMATION_SCHEMA. INFORMATION_SCHEMA is a system database that allows you to reference metadata managed internally by the MySQL server as standard SQL tables.
Because it enables flexible SQL-based retrieval of necessary information, it is highly useful for automation and reporting.
What Is INFORMATION_SCHEMA?
INFORMATION_SCHEMA is one of the system databases included by default in MySQL.
It contains tables such as “SCHEMATA,” “TABLES,” and “COLUMNS,” which store metadata about databases (schemas), tables, and columns.
You can query these tables using standard SELECT statements to extract internal configuration and structural details.
Main Use Cases:
- Retrieve detailed schema and table information
- Check data types, constraints, and default values
- Perform flexible extraction with filters and aggregation
Retrieving Schema Information
To retrieve a list and attributes of all schemas (databases):
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
This query returns schema names (SCHEMA_NAME), default character sets (DEFAULT_CHARACTER_SET_NAME), collations (DEFAULT_COLLATION_NAME), and other configuration details.
Retrieving Table and Column Information
To retrieve detailed table or column information in bulk, use the “TABLES” and “COLUMNS” tables.
Example: Retrieve all table information within a schema
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name';
Example: Retrieve detailed column information
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_NAME = 'target_table_name';
This provides column names (COLUMN_NAME), data types (DATA_TYPE), NULL settings (IS_NULLABLE), default values (COLUMN_DEFAULT), and maximum lengths (CHARACTER_MAXIMUM_LENGTH).
Practical Filtering Examples
INFORMATION_SCHEMA allows flexible filtering using WHERE clauses.
Example 1: Extract all INT-type columns within a schema
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND DATA_TYPE = 'int';
Example 2: Find tables using a specific collation
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_COLLATION LIKE 'utf8mb4%';
Using INFORMATION_SCHEMA enables flexible SQL-based extraction and analysis of MySQL’s internal structure.
[Expert] Using InnoDB Metadata and the sys Schema (MySQL 8.0+)
Once you are comfortable retrieving schema and table information, you can move on to advanced management and performance analysis. Particularly when using the InnoDB storage engine or operating large-scale systems, INFORMATION_SCHEMA’s InnoDB tables and the sys schema are extremely useful.
InnoDB Engine Metadata
InnoDB is MySQL’s default storage engine and supports transactions, row-level locking, and foreign key constraints.
Useful InnoDB-related tables include:
INNODB_TABLES: Základní informace o tabulkách spravovaných InnoDBINNODB_COLUMNS: Informace o sloupcíchINNODB_INDEXES: Detaily indexůINNODB_LOCKS: Aktuální informace o zámcíchINNODB_TRX: Aktivní transakce
Příklad: Zkontrolovat aktuální stav zámků
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
Používání schématu sys
K dispozici ve výchozím nastavení v MySQL 5.7 a novějších (zejména 8.0+), schéma sys poskytuje přehledné souhrnné pohledy na data INFORMATION_SCHEMA a performance schema.
Často používané pohledy:
sys.schema_table_statistics: Statistiky přístupu k tabulkámsys.schema_index_statistics: Statistiky využití indexůsys.innodb_lock_waits: Informace o čekání na zámkysys.user_summary: Souhrny aktivity uživatelů
Příklad: Zkontrolovat aktuální čekání na zámky
SELECT * FROM sys.innodb_lock_waits;
Příklad: Zkontrolovat statistiky čtení/zápisu pro všechny tabulky
SELECT * FROM sys.schema_table_statistics;

Shrnutí
INFORMATION_SCHEMA a schéma sys jsou výkonné nástroje, které vizualizují vnitřní stav MySQL pomocí SQL.
Jsou zvláště cenné v produkčních prostředích používajících InnoDB nebo usilujících o pokročilé operace a optimalizaci výkonu.
[Quick Reference by Use Case] Doporučené příkazy
Při kontrole schémat nebo struktury tabulek v MySQL je výběr správného příkazu pro váš cíl klíčový pro efektivitu. Tabulka níže shrnuje často používané příkazy podle účelu.
| Purpose | Command / SQL Example | Notes |
|---|---|---|
| List all schemas on the server | SHOW DATABASES; | Most basic command |
| List tables in the selected schema | SHOW TABLES; | Displays tables in current schema |
| Retrieve all table info in a schema | SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'schema_name'; | Includes table attributes |
| Quickly check column definitions | DESCRIBE table_name;SHOW COLUMNS FROM table_name; | Shows column names and types |
| Retrieve detailed column info | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'schema_name' AND TABLE_NAME = 'table_name'; | Includes NULL and default values |
| Check schema creation settings | SHOW CREATE DATABASE schema_name; | Includes COLLATE and CHARSET |
| Check table creation details | SHOW CREATE TABLE table_name; | Includes indexes and foreign keys |
| Check InnoDB locks and transactions | SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;SELECT * FROM sys.innodb_lock_waits; | Useful for InnoDB |
| Check table/index access statistics | SELECT * FROM sys.schema_table_statistics;SELECT * FROM sys.schema_index_statistics; | Uses sys schema |
| Check user privileges | SHOW GRANTS FOR 'username'@'hostname'; | Verify user permissions |
[Troubleshooting and Error Handling]
Při pokusu o prohlížení schémat nebo tabulek v MySQL můžete narazit na problémy, jako jsou neproveditelné příkazy nebo nevypsané informace.
Chyby oprávnění (Přístup odepřen)
Příklady chyb:
ERROR 1044 (42000): Access denied for user 'user'@'host' to database 'mysql'
ERROR 1142 (42000): SHOW command denied to user 'user'@'host' for table 'database'
Řešení:
- Přihlaste se pomocí administrativního účtu.
- Požádejte o potřebná oprávnění SHOW nebo SELECT.
GRANT SHOW DATABASES ON *.* TO 'user'@'host'; FLUSH PRIVILEGES;
Zkontrolujte aktuální oprávnění:
SHOW GRANTS FOR 'user'@'host';
Databáze nebo tabulka nebyla nalezena
Příklad:
ERROR 1049 (42000): Unknown database 'db_name'
ERROR 1146 (42S02): Table 'db_name.table_name' doesn't exist
Zkontrolujte překlepy, citlivost na velikost písmen a ověřte existenci pomocí:
SHOW DATABASES;
SHOW TABLES;
Rozdíly ve verzích
Některé funkce závisí na verzi MySQL.
Zkontrolujte verzi:
SELECT VERSION();
Další problémy
- Selhání připojení kvůli síťovým/serverovým problémům
- Timeouty dotazů — optimalizujte dotazy nebo upravte nastavení timeoutu
FAQ (Často kladené otázky)
Q1. Jak se liší schéma MySQL od schémat v Oracle nebo PostgreSQL?
A. V MySQL je schéma = databáze. V Oracle a PostgreSQL jsou schémata a databáze oddělené pojmy.
Q2. Jaký je nejefektivnější způsob, jak získat podrobné informace o sloupcích?
A.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name';
Q3. Jak mohu zkontrolovat znakovou sadu nebo kolaci?
A. Použijte:
SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;
Q4. Nemám oprávnění zobrazit informace. Co mám dělat?
A. Požádejte o vhodná oprávnění. Zkontrolujte svá aktuální oprávnění:
SHOW GRANTS FOR 'username'@'hostname';
Q5. Jak zkontrolovat informace o schématu v GUI nástrojích?
A. V MySQL Workbench nebo phpMyAdmin se schémata zobrazují v levém navigačním panelu. Můžete také spouštět SQL příkazy na kartě SQL.
Závěr a související odkazy
Shrnutí
- V MySQL, schéma = databáze.
- Základní kontroly lze provést pomocí
SHOW DATABASES;,SHOW TABLES;aDESCRIBE table_name;. - INFORMATION_SCHEMA a schéma sys poskytují hlubší vhled a přehled o výkonu.
- Většina problémů pramení z oprávnění, chyb v pojmenování nebo rozdílů ve verzích.
- Uchovávejte rychlé referenční příkazy po ruce pro efektivní operace.
Související odkazy
- Oficiální dokumentace MySQL
- Reference INFORMATION_SCHEMA
- Průvodce schématem sys
- Průvodce oprávněními uživatelů MySQL
Závěr
Doufáme, že tento průvodce vám pomůže lépe spravovat schémata a tabulky MySQL v každodenních operacích. Pokračujte v aktualizaci svých znalostí, jak se objevují nové verze MySQL a mění se provozní potřeby.


