Mysql
在 Mysql 數據庫中查找所有具有(外鍵和主鍵)約束的欄位的最佳方法是什麼?
我有一個有 250 個表的 mysql 數據庫。我想執行一個查詢來檢索: tableName ; 欄位名;ConstaintName(主鍵或外鍵)。
我可以使用 information_schema.TABLE_CONSTRAINTS 來檢索約束類型,但對於內部連接,我不知道應該使用什麼。
完成這項任務的最佳方法是什麼?
編輯:不是約束名稱。應該是 CONSTRAINT_TYPE 而不是 ConstaintName。所以我們應該只能看到(主鍵或外鍵)。
您可以使用INFORMATION_SCHEMA KEY_COLUMN_USAGE表。
SELECT table_name AS TableName, column_name AS ColumnName, Constraint_name as ConstraintName FROM information_schema.key_column_usage WHERE table_schema = 'database_name'
根據 OP 的要求更新了程式碼:
SELECT DISTINCT(TC.table_name) AS TableName, KC.column_name as ColumnName, TC. CONSTRAINT_TYPE AS ConstraintType FROM information_schema.table_constraints TC, information_schema.key_column_usage KC WHERE TC.CONSTRAINT_TYPE IN ('FOREIGN KEY', 'PRIMARY KEY') and KC.table_name = TC.table_name and KC.TABLE_SCHEMA = TC.TABLE_SCHEMA and KC.CONSTRAINT_NAME = TC.CONSTRAINT_NAME and KC.table_schema = DATABASE();