首页 > 数据库 > mysql教程 > 如何使用 SQL 查询在 SQL Server 中查找表的主键?

如何使用 SQL 查询在 SQL Server 中查找表的主键?

DDD
发布: 2025-01-05 19:28:39
原创
492 人浏览过

How to Find a Table's Primary Key in SQL Server Using SQL Queries?

在 SQL Server 中使用 SQL 查询查找表主键

在 SQL Server 中,使用 SQL 查询获取表的主键涉及到一些轻微的问题与 MySQL 相比,采用不同的方法。探索以下查询选项来检索主键信息:

SQL Server 查询:

SQL Server 的一个常用查询是:

SELECT name AS PrimaryKey
FROM sysobjects
WHERE xtype = 'PK' AND name IN (
    SELECT name 
    FROM sysindexes 
    WHERE id = object_id(TableName)
)
登录后复制

将TableName替换为查询中的实际表名。

另一个SQL Server查询:

下面提供了 SQL Server 的替代查询:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)), 'IsPrimaryKey') = 1
AND TABLE_NAME = 'TableName' AND TABLE_SCHEMA = 'Schema'
登录后复制

再次用适当的值替换 TableName 和 Schema。

通用MySQL 和 SQL Server 查询(不推荐):

虽然有与 SQL Server 问题中提到的 MySQL 查询没有直接等效项,可以使用一种更复杂的查询,该查询应该在两个数据库系统中都有效:

SELECT T.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS T
LEFT JOIN 
    (SELECT DISTINCT C.TABLE_NAME, C.COLUMN_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS U
    JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS C
        ON U.TABLE_SCHEMA = C.TABLE_SCHEMA
        AND U.TABLE_NAME = C.TABLE_NAME
        AND U.CONSTRAINT_NAME = C.CONSTRAINT_NAME) AS S
    ON T.TABLE_NAME = S.TABLE_NAME AND T.COLUMN_NAME = S.COLUMN_NAME
WHERE T.TABLE_SCHEMA = 'TableName_Schema' AND T.TABLE_NAME = 'TableName'
登录后复制

虽然此查询可以在 MySQL 和 SQL Server 中运行,效率较低,不建议获得最佳性能。

以上是如何使用 SQL 查询在 SQL Server 中查找表的主键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板