Navicat使用教程:探討MySQL信息模式中的INFORMATION_SCHEMA
Navicat Premium 是一套數(shù)據(jù)庫管理工具,讓你使用一個(gè)程序即可同時(shí)連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫。快速管理不同類型的數(shù)據(jù)庫。
在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)庫元數(shù)據(jù)(例如有關(guān)MySQL服務(wù)器的信息、數(shù)據(jù)庫或表的名稱、列的數(shù)據(jù)類型或訪問特權(quán))存儲(chǔ)在數(shù)據(jù)字典和/或系統(tǒng)目錄中。MySQL在名為INFORMATION_SCHEMA的特殊模式中提供數(shù)據(jù)庫元數(shù)據(jù)。每個(gè)MySQL實(shí)例中都有一個(gè)INFORMATION_SCHEMA。它包含幾個(gè)只讀表,您可以查詢這些表以獲得所需的信息。在今天的文章中,我們將探討INFORMATION_SCHEMA的一些實(shí)際用法,例如使用Navicat Premium。
獲取表信息
information_schema.tables表包含有關(guān)表的元數(shù)據(jù),您猜對了!除了表名之外,您還可以檢索其類型(基本表或視圖)和引擎:
SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'sakila' ORDER BY table_name;
這是上面的查詢和Navicat的結(jié)果:
您還可以查詢information_schema.tables以獲取表的大?。?/p>
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "sakila" AND table_name = "film";
以下是Navicat Premium的結(jié)果:
通過一些調(diào)整,您可以列出每個(gè)數(shù)據(jù)庫中每個(gè)表的大?。?/p>
SELECT table_schema as `Database`, table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
您甚至可以使用information_schema.tables列出MySQL實(shí)例中每個(gè)數(shù)據(jù)庫的大小!
SELECT table_schema as `Database`, table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
查看表統(tǒng)計(jì)信息
INFORMATION_SCHEMA.STATISTICS表包含緩存的值。因此,這些默認(rèn)情況下會(huì)在24小時(shí)后過期。如果沒有緩存的統(tǒng)計(jì)信息或統(tǒng)計(jì)信息已過期,則在查詢表統(tǒng)計(jì)信息列時(shí)將從存儲(chǔ)引擎檢索統(tǒng)計(jì)信息。
INFORMATION_SCHEMA.STATISTICS表的一種用途是查看特定模式中所有表的索引:
SELECT DISTINCT TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_schema';
以下是Navicat中sakila數(shù)據(jù)庫提供的結(jié)果:
您只需刪除where子句即可查看所有架構(gòu)中的所有索引。在這種情況下,您可能還需要添加數(shù)據(jù)庫名稱:
SELECT DISTINCT stat.TABLE_SCHEMA as 'DATABASE', TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS stat;
結(jié)論
在今天的文章中,我們學(xué)習(xí)了許多使用MySQL INFORMATION_SCHEMA來獲取有關(guān)MySQL實(shí)例中各種對象的元數(shù)據(jù)信息,從數(shù)據(jù)庫到表、列、索引等數(shù)據(jù)庫的方法。盡管查詢是在Navicat Premium中運(yùn)行的,但適用于Navicat for MySQL也可以正常使用!
相關(guān)內(nèi)容推薦:
想要購買該產(chǎn)品正版授權(quán),或了解更多產(chǎn)品信息請點(diǎn)擊“咨詢在線客服”