test表结构
在这里插入图片描述
方法一

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

结果:
在这里插入图片描述
方法二
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'))

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐