2010-03-29 51 views
12

我正在開發超過700個表格。我需要查看給定表的所有相關表的列表。你能推薦一款能夠提供這種功能的應用嗎?查找給定表的所有相關表格

+2

SQL的哪個版本?如果是微軟的,Management Studio可以創建一個圖... – 2010-03-29 18:29:52

回答

15

如果你的數據庫支持的信息架構視圖(大多數人),那麼你可以運行此查詢:

SELECT 
    c.CONSTRAINT_NAME, 
    cu.TABLE_NAME AS ReferencingTable, cu.COLUMN_NAME AS ReferencingColumn, 
    ku.TABLE_NAME AS ReferencedTable, ku.COLUMN_NAME AS ReferencedColumn 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS c 
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu 
ON cu.CONSTRAINT_NAME = c.CONSTRAINT_NAME 
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku 
ON ku.CONSTRAINT_NAME = c.UNIQUE_CONSTRAINT_NAME 

這將輸出的所有引用約束列表(外鍵),來源(參考)表/列和主鍵(引用)表/列。

如果你想看到一個特定表引用,只需添加:

WHERE ku.TABLE_NAME = 'SomeTable' 
+1

是否可以在sql server中以這種方式選擇單個記錄及其所有相關記錄? – codemonkeyliketab 2016-05-02 14:33:50

+0

@codemonkeyliketab詢問重要問題 – Kristopher 2016-06-07 19:46:42

5

根據不同的數據庫產品,你應該能夠查詢INFORMATION_SCHEMA意見,像這樣:

Select FK.TABLE_SCHEMA, FK.TABLE_NAME 
From INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS As RC 
    Join INFORMATION_SCHEMA.TABLE_CONSTRAINTS As PK 
     On PK.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME 
    Join INFORMATION_SCHEMA.TABLE_CONSTRAINTS As FK 
     On FK.CONSTRAINT_NAME = RC.CONSTRAINT_NAME 
Where PK.TABLE_SCHEMA = 'dbo' 
    And PK.TABLE_NAME = '<target table name>' 
1

MS Visio Pro可以很好地對各種數據庫(通過ODBC)進行數據庫模式的反向工程,並提供了非常靈活的圖表。

注意事項:不管你使用什麼系統,你都不想一次把所有700個表全部拉入。嘗試創建幾個邏輯分組的圖表。希望數據庫中會有很多這樣的分組。

+0

不幸的是,這個令人敬畏的功能在2013年被拋棄。2010年是它的最後一個版本。 – jleach 2016-06-30 12:34:15

-1

你可以試試這個:

SELECT * 
FROM 
    KEY_COLUMN_USAGE 
WHERE 
    REFERENCED_TABLE_NAME = 'your_table_name' 
AND REFERENCED_COLUMN_NAME = 'your_column_id' 
AND TABLE_SCHEMA = 'your_database_name'; 
10

簡單和最簡單的解決方案使用內置的過程,以獲得給定表的相關表。

exec sp_fkeys 'Your_PK_TABLE_NAME' 
+0

很好的答案... – brijrajsinh 2017-07-06 12:03:11

+0

'GO'附近的語法不正確。我在哪裏錯了? – 2017-11-14 13:04:27

+1

@Marimba,請刪除Go;從聲明和執行。 – 2017-11-15 04:40:46