转载链接: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
相关推荐
在SQL Server 2008 (包括R2版本)中,有时用户在尝试修改数据表的数据类型或主键设置后,会遇到一个错误提示,表明无法保存所做的更改,导致操作失败。这个问题通常与数据库设计者的一项默认设置有关,即“阻止保存...
本操作文档将详细介绍如何使用Navicat客户端工具将SQL Server的表结构转换到MySQL数据库中。Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括SQL Server和MySQL,使得数据迁移变得简单而高效。 首先,...
在SQL Server中,主键是数据库表设计的关键组成部分,它用于唯一标识表中的每一行记录。主键约束确保了主键列的值是唯一的,并且不允许出现NULL值。每个表都应当有一个主键,但一个表只能有一个主键约束。主键约束的...
在SQL Server中,`xp_cmdshell`是一个非常强大的系统存储过程,它允许数据库管理员执行操作系统级别的命令,并将结果返回到SQL Server环境中。然而,出于安全考虑,`xp_cmdshell`默认是禁用的,因为不恰当的使用可能...
### SQL Server 解析 JSON 字符串方法详解 随着 Web 应用和服务的广泛采用,JSON 成为了一种非常流行的轻量级数据交换格式。在 SQL Server 中处理 JSON 数据变得日益重要,尤其是对于那些需要从非结构化数据源提取...
总结,《SQL Server宝典SQL Server语句大全》中的内容涵盖了SQL Server从基础到高级的各个方面,无论是数据库管理员还是开发人员,都能从中找到所需的SQL Server知识和实践经验。通过深入学习和实践,可以更好地利用...
SQL Server 2005是Microsoft的一个关系型数据库管理系统,广泛应用于数据存储和管理。以下是一些关于SQL Server 2005的关键知识点,主要基于提供的考试题目: 1. **系统存储过程**:用于显示数据库信息的系统存储...
在这种情况下,我们选择ODBC方式导入,因为这是从SQL Server同步数据到MySQL的一个常见方法。 4. **配置ODBC数据源**: 接下来,你需要配置ODBC数据源。这通常涉及到安装ODBC驱动,如SQL Server Native Client或...
转换后的脚本有两种处理方式:一是直接在远程主机提供商的SQL Server 2005环境中执行此脚本,二是将脚本导入到新的SQL Server 2005数据库中。前者需要使用SQL Server身份验证(通常由主机提供商提供用户名和密码),...
**SQL Server 电子教案概述** SQL Server是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。本电子教案旨在提供一个全面、深入的SQL Server学习平台,帮助初学者和进阶者掌握SQL...
在SQL Server论坛精华中,你可以...在论坛精华中,你可能会找到关于这些问题的具体案例、解决方法、最佳实践和经验分享,这些都是提升SQL Server技能的有效资源。记得不断学习和实践,以应对数据库管理中的各种挑战。
在SQL Server中,创建数据库有两种主要方法:使用企业管理器和通过SQL语句。 **2.1 使用企业管理器创建数据库** 此方法适合初学者,操作直观易懂。首先,通过"开始"菜单启动"企业管理器",找到并展开"SQL Server ...
有两种方法可以实现: - 使用子查询和别名: ```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....
这种方法高效且适用于大数据量,因为它只需要找到主键范围。但是,如果排序字段不是唯一的,可能会导致错误的结果。 4. **插入临时表分页**: 这种方法涉及创建一个临时表,存储排序后的主键和rowId,然后使用这些...
在SQL Server中,生成表的脚本是一种常见的数据库管理任务,尤其在数据库设计、备份或复制表结构到其他环境时非常有用。以下是一份详细的指南,教你如何在SQL Server中通过脚本创建表。 首先,我们可以使用SQL ...
1. SQL Server是一种基于客户机/服务器的关系型数据库管理系统,它使用Transact-SQL (T-SQL)语言在服务器和客户机之间传递请求。T-SQL是SQL Server的扩展,用于数据查询、数据更新、事务控制等。 2. SQL Server ...
总结,SQL Server 2000作为一款强大的数据库管理系统,其功能全面且强大,无论是初学者还是经验丰富的DBA,都能从中找到适合自己的工具和方法。学习并掌握SQL Server 2000,对于理解和操作数据库至关重要,也是IT...
在本项目中,“通讯录+ASP.NET+SQL Server”是一个基于Web的应用程序,它整合了ASP.NET技术、SQL Server数据库管理系统以及通讯录管理的功能。这个课程设计旨在教授开发者如何构建一个实用的在线通讯录系统,让学生...
2. SQLServer中复制表 - 只复制表结构:可以使用`SELECT * INTO new_table FROM old_table WHERE 1<>1`或`SELECT TOP 0 * INTO new_table FROM old_table`。 - 复制表结构与内容:直接`SELECT * INTO new_table ...