📜  用于检查或查找作为主键列的列名的 SQL 查询(1)

📅  最后修改于: 2023-12-03 14:56:21.551000             🧑  作者: Mango

用于检查或查找作为主键列的列名的 SQL 查询

在关系型数据库中,表中的一列可以被指定为主键列,用来唯一标识表中的每行数据。在进行数据库维护、数据操作时,有时需要查找或检查哪些列被指定为主键列。下面介绍几个用于检查或查找作为主键列的列名的 SQL 查询。

查询表的主键

用于查询表的主键列名的 SQL 语句如下:

SELECT kc.column_name
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kc
  ON kc.table_name = tc.table_name
  AND kc.table_schema = tc.table_schema
  AND kc.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'PRIMARY KEY'
  AND tc.table_name = '<table_name>';

其中,<table_name> 表示要查询主键列的表名。该查询语句会返回指定表名的主键列名,如果表没有主键,则返回空结果集。

查询表中所有主键列

用于查询表中所有主键列的 SQL 语句如下:

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

该查询语句会返回数据库中所有表的主键列名,以及对应的表名。如果表没有主键,则该表不会出现在结果中。

查询所有主键列

用于查询数据库中所有主键列名的 SQL 语句如下:

SELECT kc.table_schema,
    kc.table_name,
    kc.column_name
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kc
  ON kc.table_name = tc.table_name
  AND kc.table_schema = tc.table_schema
  AND kc.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'PRIMARY KEY'
ORDER BY kc.table_schema,
    kc.table_name,
    kc.column_name;

该查询语句会返回数据库中所有表的主键列名,以及对应的表名和模式名。结果按照模式名、表名、列名的顺序排序。如果表没有主键,则该表不会出现在结果中。

以上三个查询语句可以帮助程序员快速查找或检查数据库中所有主键列名,从而辅助进行数据库维护和数据操作。