web-dev-qa-db-ja.com

MySQLデータベース全体のすべての外部キー制約を表示する

私は最近手渡された150以上のテーブルを持つ大規模なデータベースを持っています。テーブルごとではなく、DB全体のすべての外部キー制約を表示する簡単な方法があるかどうか疑問に思っています。

45
Scott Wolf

INFORMATION_SCHEMA このためのテーブル。たとえば、 INFORMATION_SCHEMA TABLE_CONSTRAINTS テーブル。

このような何かがそれをするはずです:

select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'
79
RedFilter

これは私が有用な情報を取得することを好むものです:

SELECT CONSTRAINT_NAME,
       UNIQUE_CONSTRAINT_NAME, 
       MATCH_OPTION, 
       UPDATE_RULE,
       DELETE_RULE,
       TABLE_NAME,
       REFERENCED_TABLE_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'your_database_name'
16
genespos

ユーザーRedFilterが現在受け入れている回答は、データベースが1つしかない場合は正常に機能しますが、データベースが複数ある場合は機能しません。

use information_schema;を入力した後、このクエリを使用してname_of_dbの外部キーを取得します。

select * from `table_constraints` where `table_schema` like `name_of_db` and `constraint_type` = 'FOREIGN KEY'

このクエリを使用してname_of_dbの外部キーを取得し、誰でも書き込み可能なファイルoutput_filepath_and_nameに保存します。

select * from `table_constraints` where `table_schema` like "name_of_db" and `constraint_type` = 'FOREIGN KEY' into outfile "output_filepath_and_name" FIELDS TERMINATED BY ',' ENCLOSED BY '"';
7
Buttle Butkus

このコードをクエリ

select constraint_name,
   table_schema,
   table_name
from   information_schema.table_constraints

あなたはconstraint_nameを取得し、databaseのリストであるtable_schemaをフィルタリングします。

これを見て

1
user3673263

SQL:

select constraint_name,
       table_schema,
       table_name
from   information_schema.table_constraints
where  constraint_schema = 'astdb'

出力:

+----------------------------+--------------+---------------------+
| constraint_name            | table_schema | table_name          |
+----------------------------+--------------+---------------------+
| PRIMARY                    | astdb        | asset_category      |
| PRIMARY                    | astdb        | asset_type          |
| PRIMARY                    | astdb        | asset_valuation     |
| PRIMARY                    | astdb        | assets              |
| PRIMARY                    | astdb        | com_mst             |
| PRIMARY                    | astdb        | com_typ             |
| PRIMARY                    | astdb        | ref_company_type    |
| PRIMARY                    | astdb        | supplier            |
| PRIMARY                    | astdb        | third_party_company |
| third_party_company_ibfk_1 | astdb        | third_party_company |
| PRIMARY                    | astdb        | user                |
| PRIMARY                    | astdb        | user_role           |
+----------------------------+--------------+---------------------+
0
Nisar