查詢數(shù)據(jù)庫所有表主鍵外鍵(mysql)

群里有人問,查了一些資料,發(fā)現(xiàn)可以通過mysql自帶的 information_schema數(shù)據(jù)庫進(jìn)行查詢,它提供了訪問數(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ù)器所維護(hù)的所有其他數(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ù)庫中的表的信息(包括視圖)。詳細(xì)表述了某個表屬于哪個schema,表類型,表引擎,創(chuàng)建時間等信息。是show tables from schemaname的結(jié)果取之此表。
COLUMNS表:
提供了表中的列信息。詳細(xì)表述了某張表的所有列以及每個列的信息。是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ù)庫名字';
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容