数据库 · 6 11 月, 2024

兩種數據庫中查詢表主鍵外鍵信息的SQL語句

兩種數據庫中查詢表主鍵外鍵信息的SQL語句

在數據庫設計中,主鍵和外鍵是確保數據完整性和關聯性的關鍵元素。主鍵用於唯一標識表中的每一行,而外鍵則用於建立表之間的關聯。本文將探討在兩種流行的數據庫管理系統(DBMS)中,如何查詢表的主鍵和外鍵信息,分別是 MySQL 和 PostgreSQL。

MySQL 中查詢主鍵和外鍵信息

在 MySQL 中,可以使用 INFORMATION_SCHEMA 數據庫來查詢表的主鍵和外鍵信息。以下是查詢主鍵和外鍵的 SQL 語句示例:

查詢主鍵


SELECT 
    TABLE_NAME, 
    COLUMN_NAME, 
    CONSTRAINT_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = '你的數據庫名' 
    AND CONSTRAINT_NAME = 'PRIMARY';

這段 SQL 語句將返回指定數據庫中所有表的主鍵信息,包括表名、列名和約束名。

查詢外鍵


SELECT 
    TABLE_NAME, 
    COLUMN_NAME, 
    CONSTRAINT_NAME, 
    REFERENCED_TABLE_NAME, 
    REFERENCED_COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = '你的數據庫名' 
    AND REFERENCED_TABLE_NAME IS NOT NULL;

這段 SQL 語句將返回所有外鍵的詳細信息,包括外鍵所屬的表、列、約束名以及引用的表和列。

PostgreSQL 中查詢主鍵和外鍵信息

在 PostgreSQL 中,查詢主鍵和外鍵信息的方式略有不同。可以使用 pg_catalog 來獲取相關信息。以下是查詢主鍵和外鍵的 SQL 語句示例:

查詢主鍵


SELECT 
    kcu.table_name, 
    kcu.column_name, 
    tc.constraint_name 
FROM 
    information_schema.table_constraints AS tc 
JOIN 
    information_schema.key_column_usage AS kcu 
ON 
    tc.constraint_name = kcu.constraint_name 
WHERE 
    tc.constraint_type = 'PRIMARY KEY' 
    AND kcu.table_schema = 'public';

這段 SQL 語句將返回 PostgreSQL 中所有表的主鍵信息,包括表名、列名和約束名。

查詢外鍵


SELECT 
    kcu.table_name, 
    kcu.column_name, 
    tc.constraint_name, 
    ccu.table_name AS foreign_table_name, 
    ccu.column_name AS foreign_column_name 
FROM 
    information_schema.table_constraints AS tc 
JOIN 
    information_schema.key_column_usage AS kcu 
ON 
    tc.constraint_name = kcu.constraint_name 
JOIN 
    information_schema.constraint_column_usage AS ccu 
ON 
    ccu.constraint_name = tc.constraint_name 
WHERE 
    tc.constraint_type = 'FOREIGN KEY' 
    AND kcu.table_schema = 'public';

這段 SQL 語句將返回所有外鍵的詳細信息,包括外鍵所屬的表、列、約束名以及引用的表和列。

總結

在數據庫設計中,主鍵和外鍵的正確使用對於數據的完整性和關聯性至關重要。無論是在 MySQL 還是 PostgreSQL 中,通過查詢 INFORMATION_SCHEMApg_catalog,用戶都可以輕鬆獲取所需的主鍵和外鍵信息。這些查詢不僅有助於數據庫管理,也能在開發過程中提供必要的支持。

如果您正在尋找高效的 香港VPS 解決方案,Server.HK 提供多種選擇以滿足您的需求,無論是數據庫管理還是其他應用程序的支持。