群里有人問卷雕,查了一些資料,發(fā)現(xiàn)可以通過mysql自帶的 information_schema數(shù)據(jù)庫進行查詢票从,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式漫雕。什么是元數(shù)據(jù)呢?元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)峰鄙,如數(shù)據(jù)庫名或表名浸间,列的數(shù)據(jù)類型,或訪問權(quán)限等吟榴。有些時候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”魁蒜。在MySQL中,把 information_schema 看作是一個數(shù)據(jù)庫吩翻,確切說是信息數(shù)據(jù)庫兜看。其中保存著關(guān)于MySQL服務(wù)器所維護的所有其他數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名狭瞎,數(shù)據(jù)庫的表细移,表欄的數(shù)據(jù)類型與訪問權(quán) 限等。在INFORMATION_SCHEMA中熊锭,有數(shù)個只讀表葫哗。它們實際上是視圖缔刹,而不是基本表球涛,因此劣针,你將無法看到與之相關(guān)的任何文件。
information_schema數(shù)據(jù)庫表說明:
SCHEMATA表:
提供了當(dāng)前mysql實例中所有數(shù)據(jù)庫的信息亿扁。是show databases的結(jié)果取之此表捺典。
TABLES表:
提供了關(guān)于數(shù)據(jù)庫中的表的信息(包括視圖)。詳細表述了某個表屬于哪個schema从祝,表類型襟己,表引擎,創(chuàng)建時間等信息牍陌。是show tables from schemaname的結(jié)果取之此表擎浴。
COLUMNS表:
提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息毒涧。是show columns from schemaname.tablename的結(jié)果取之此表贮预。
STATISTICS表:
提供了關(guān)于表索引的信息。是show index from schemaname.tablename的結(jié)果取之此表契讲。
USER_PRIVILEGES(用戶權(quán)限)表:
給出了關(guān)于全程權(quán)限的信息仿吞。該信息源自mysql.user授權(quán)表。是非標(biāo)準(zhǔn)表捡偏。
SCHEMA_PRIVILEGES(方案權(quán)限)表:
給出了關(guān)于方案(數(shù)據(jù)庫)權(quán)限的信息。該信息來自mysql.db授權(quán)表你虹。是非標(biāo)準(zhǔn)表。
TABLE_PRIVILEGES(表權(quán)限)表:
給出了關(guān)于表權(quán)限的信息傅物。該信息源自mysql.tables_priv授權(quán)表忠藤。是非標(biāo)準(zhǔn)表挟伙。
COLUMN_PRIVILEGES(列權(quán)限)表:
給出了關(guān)于列權(quán)限的信息模孩。該信息源自mysql.columns_priv授權(quán)表。是非標(biāo)準(zhǔn)表榨咐。
CHARACTER_SETS(字符集)表:
提供了mysql實例可用字符集的信息。是SHOW CHARACTER SET結(jié)果集取之此表块茁。
COLLATIONS表:
提供了關(guān)于各字符集的對照信息桂肌。
COLLATION_CHARACTER_SET_APPLICABILITY表:
指明了可用于校對的字符集永淌。這些列等效于SHOW COLLATION的前兩個顯示字段。
TABLE_CONSTRAINTS表:
描述了存在約束的表遂蛀。以及表的約束類型。
KEY_COLUMN_USAGE表:
描述了具有約束的鍵列李滴。
ROUTINES表:
提供了關(guān)于存儲子程序(存儲程序和函數(shù))的信息。此時谆扎,ROUTINES表不包含自定義函數(shù)(UDF)。名為“mysql.proc name”的列指明了對應(yīng)于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列堂湖。
VIEWS表:
給出了關(guān)于數(shù)據(jù)庫中的視圖的信息周瞎。需要有show views權(quán)限,否則無法查看視圖信息声诸。
TRIGGERS表:
提供了關(guān)于觸發(fā)程序的信息酱讶。必須有super權(quán)限才能查看該表
最后選擇使用table_constraints 和key_column_usage 的連接查詢搞定彼乌,其他數(shù)據(jù)庫的查詢操作應(yīng)該也類似泻肯。
SELECT k.column_name,k.referenced_column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
USING (constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema='你的數(shù)據(jù)庫名字';