sql server查找表主键的多种方式

test表结构
sql server查找表主键的多种方式_第1张图片
方法一

SELECT
	TABLE_NAME,
	COLUMN_NAME
FROM
	INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where TABLE_NAME ='test'

结果:
sql server查找表主键的多种方式_第2张图片
方法二
1.利用存储过程查出表明和主键名

 exec sp_pkeys 'test'

在这里插入图片描述
2.存储在临时表或变量中
方法一存储在变量

BEGIN
Declare @tablevar table(
TABLE_QUALIFIER varchar(10) null, 
TABLE_OWNER varchar(10) null, 
TABLE_NAME  varchar(10) null, 
COLUMN_NAME varchar(10) null, 
KEY_SEQ varchar(10) null,  
PK_NAME varchar(50) null) ;
insert into @tablevar exec sp_pkeys 'test' ;
SELECT TABLE_NAME, COLUMN_NAME FROM  @tablevar ;
END

方法三存储在临时表

create  table #tab(
TABLE_QUALIFIER varchar(10), 
TABLE_OWNER varchar(10), 
TABLE_NAME  varchar(10), 
COLUMN_NAME varchar(10), 
KEY_SEQ varchar(10),  
PK_NAME varchar(50), 
)
insert into #tab EXEC sp_pkeys @table_name='test'
SELECT TABLE_NAME, COLUMN_NAME FROM #tab

在这里插入图片描述
方法四(方法一变种,返回主键用连接符连接)

SELECT distinct
	TABLE_NAME,
	COLUMN_NAME=stuff((
		SELECT '|'+COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
		where TABLE_NAME ='test'
    FOR XML path('')
    ), 1, 1, '')
FROM
	INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where TABLE_NAME ='test'

结果
在这里插入图片描述

其他方法

--只能查到主键名
SELECT name FROM syscolumns WHERE id=Object_Id('test') and colid IN(SELECT keyno from sysindexkeys WHERE id=Object_Id('test'))

sql server查找表主键的多种方式_第3张图片

你可能感兴趣的:(数据库,sql,sqlserver)