`

转:四种找到SqlServer主键的方法

阅读更多

转载链接:http://database.51cto.com/art/201010/230521.htm

 

 

SqlServer有多种找到SqlServer主键的方法,下面就为您介绍其中的四种,供您参考学习,其中的第一、二中种方法是最为简单的。

1:利用SQL自带的存储过程找到SqlServer主键:

EXEC sp_pkeys @table_name='表名'

2:利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE 找到SqlServer主键:

SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE   
WHERE TABLE_NAME='表名' 

3: 以下这个查询表结构的语句可能大家都见过:

利用syscolumns,sysindexes,sysindexkeys三个表关联可以查出SqlServer主键

SELECT   
 (case when a.colorder=1 then d.name else '' end) N'表名',  
 a.colorder N'字段序号',  
 a.name N'字段名',  
 (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',  
 (case when (SELECT count(*)  
 FROM sysobjects  
 WHERE (name in  
           (SELECT name  
          FROM sysindexes  
          WHERE (id = a.id) AND (indid in  
                    (SELECT indid  
                   FROM sysindexkeys  
                   WHERE (id = a.id) AND (colid in  
                             (SELECT colid  
                            FROM syscolumns  
                            WHERE (id = a.id) AND (name = a.name))))))) AND  
        (xtype = 'PK'))>0 then '√' else '' end) N'主键',  
 b.name N'类型',  
 a.length N'占用字节数',  
 COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',  
 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',  
 (case when a.isnullable=1 then '√'else '' end) N'允许空',  
 isnull(e.text,'') N'默认值',  
 isnull(g.[value],'') AS N'字段说明'  
--into ##tx  
 
FROM  syscolumns  a left join systypes b   
on  a.xtype=b.xusertype  
inner join sysobjects d   
on a.id=d.id  and  d.xtype='U' and  d.name<>'dtproperties'  
left join syscomments e  
on a.cdefault=e.id  
left join sysproperties g  
on a.id=g.id AND a.colid = g.smallid    
order by object_name(a.id),a.colorder  

 4:

select o.name as 表名,c.name as 字段名,k.colid as 字段序号,k.keyno as 索引顺序 from sysindexes i  
join sysindexkeys k on i.id = k.id and i.indid = k.indid  
join sysobjects o on i.id = o.id  
join syscolumns c on i.id=c.id and k.colid = c.colid  
where o.xtype = 'U' 
and exists(select 1 from sysobjects where xtype = 'PK' and name = i.name)  
order by o.name,k.colid  

 

 

分享到:
评论

相关推荐

    解决Sqlserver2008(sql2008)修改数据表数据类型或主键后,提示无法保存,失败的问题!.doc

    在SQL Server 2008 (包括R2版本)中,有时用户在尝试修改数据表的数据类型或主键设置后,会遇到一个错误提示,表明无法保存所做的更改,导致操作失败。这个问题通常与数据库设计者的一项默认设置有关,即“阻止保存...

    Navicat客户端sqlserver表结构转到mysql数据库中操作文档

    本操作文档将详细介绍如何使用Navicat客户端工具将SQL Server的表结构转换到MySQL数据库中。Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括SQL Server和MySQL,使得数据迁移变得简单而高效。 首先,...

    SQL SERVER-主键的建立和删除

    在SQL Server中,主键是数据库表设计的关键组成部分,它用于唯一标识表中的每一行记录。主键约束确保了主键列的值是唯一的,并且不允许出现NULL值。每个表都应当有一个主键,但一个表只能有一个主键约束。主键约束的...

    SQL Server如何启用xp_cmdshell组件1

    在SQL Server中,`xp_cmdshell`是一个非常强大的系统存储过程,它允许数据库管理员执行操作系统级别的命令,并将结果返回到SQL Server环境中。然而,出于安全考虑,`xp_cmdshell`默认是禁用的,因为不恰当的使用可能...

    Sql Server解析Json

    ### SQL Server 解析 JSON 字符串方法详解 随着 Web 应用和服务的广泛采用,JSON 成为了一种非常流行的轻量级数据交换格式。在 SQL Server 中处理 JSON 数据变得日益重要,尤其是对于那些需要从非结构化数据源提取...

    SQL Server宝典SQL Server语句大全

    总结,《SQL Server宝典SQL Server语句大全》中的内容涵盖了SQL Server从基础到高级的各个方面,无论是数据库管理员还是开发人员,都能从中找到所需的SQL Server知识和实践经验。通过深入学习和实践,可以更好地利用...

    SQLServer2005考试题及答案

    SQL Server 2005是Microsoft的一个关系型数据库管理系统,广泛应用于数据存储和管理。以下是一些关于SQL Server 2005的关键知识点,主要基于提供的考试题目: 1. **系统存储过程**:用于显示数据库信息的系统存储...

    Navicat 实现同步sqlserver表结构到mysql操作手册1

    在这种情况下,我们选择ODBC方式导入,因为这是从SQL Server同步数据到MySQL的一个常见方法。 4. **配置ODBC数据源**: 接下来,你需要配置ODBC数据源。这通常涉及到安装ODBC驱动,如SQL Server Native Client或...

    SQL Server 2008 转换为 SQL 2005 数据库 脚本生成

    转换后的脚本有两种处理方式:一是直接在远程主机提供商的SQL Server 2005环境中执行此脚本,二是将脚本导入到新的SQL Server 2005数据库中。前者需要使用SQL Server身份验证(通常由主机提供商提供用户名和密码),...

    sqlserver 电子教案

    **SQL Server 电子教案概述** SQL Server是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。本电子教案旨在提供一个全面、深入的SQL Server学习平台,帮助初学者和进阶者掌握SQL...

    SQL Server论坛精华

    在SQL Server论坛精华中,你可以...在论坛精华中,你可能会找到关于这些问题的具体案例、解决方法、最佳实践和经验分享,这些都是提升SQL Server技能的有效资源。记得不断学习和实践,以应对数据库管理中的各种挑战。

    SQLserver数据库教程

    在SQL Server中,创建数据库有两种主要方法:使用企业管理器和通过SQL语句。 **2.1 使用企业管理器创建数据库** 此方法适合初学者,操作直观易懂。首先,通过"开始"菜单启动"企业管理器",找到并展开"SQL Server ...

    sqlserver面试题

    有两种方法可以实现: - 使用子查询和别名: ```sql SELECT year, (SELECT amount FROM aaa m WHERE month = 1 AND m.year = aaa.year) AS m1, (SELECT amount FROM aaa m WHERE month = 2 AND m.year = aaa....

    sql server分页技术(SQL Server 与Access数据库相关分页技术)

    这种方法高效且适用于大数据量,因为它只需要找到主键范围。但是,如果排序字段不是唯一的,可能会导致错误的结果。 4. **插入临时表分页**: 这种方法涉及创建一个临时表,存储排序后的主键和rowId,然后使用这些...

    SQLSERVER如何使用脚本生成表

    在SQL Server中,生成表的脚本是一种常见的数据库管理任务,尤其在数据库设计、备份或复制表结构到其他环境时非常有用。以下是一份详细的指南,教你如何在SQL Server中通过脚本创建表。 首先,我们可以使用SQL ...

    SQL Server 模拟试卷

    1. SQL Server是一种基于客户机/服务器的关系型数据库管理系统,它使用Transact-SQL (T-SQL)语言在服务器和客户机之间传递请求。T-SQL是SQL Server的扩展,用于数据查询、数据更新、事务控制等。 2. SQL Server ...

    SQL SERVER2000使用教程

    总结,SQL Server 2000作为一款强大的数据库管理系统,其功能全面且强大,无论是初学者还是经验丰富的DBA,都能从中找到适合自己的工具和方法。学习并掌握SQL Server 2000,对于理解和操作数据库至关重要,也是IT...

    通讯录+ASP.NET+SQL Server

    在本项目中,“通讯录+ASP.NET+SQL Server”是一个基于Web的应用程序,它整合了ASP.NET技术、SQL Server数据库管理系统以及通讯录管理的功能。这个课程设计旨在教授开发者如何构建一个实用的在线通讯录系统,让学生...

    sql server经典面试题

    2. SQLServer中复制表 - 只复制表结构:可以使用`SELECT * INTO new_table FROM old_table WHERE 1&lt;&gt;1`或`SELECT TOP 0 * INTO new_table FROM old_table`。 - 复制表结构与内容:直接`SELECT * INTO new_table ...

Global site tag (gtag.js) - Google Analytics