找SQL表的主键

原创 2004年03月20日 15:04:00

1:利用SQL自带的存储过程

EXEC sp_pkeys @table_name='表名'

2:利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE

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

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

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

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表的主键

1:利用SQL自带的存储过程EXEC sp_pkeys @table_name=表名2:利用系统表INFORMATION_SCHEMA.KEY_COLUMN_USAGE SELECT TABLE_NA...
  • lizhizhe2000
  • lizhizhe2000
  • 2006年10月31日 13:49
  • 698

用SQL语句给一个表的增加自增主键或删除主键

刚开始时碰到这个需求时,在网上搜索了一下,发现都说不行,得先删除那主键列再重新增加或者先创建一个临时表再把数据导过来,其实在MYSQL中是可以直接修改的。 修改ID字段为自增主键: alter tab...
  • lanyd
  • lanyd
  • 2014年09月03日 14:35
  • 5799

sql语句获取一个表的主键字段

EXEC sp_pkeys @table_name='Fields'
  • hutao1101175783
  • hutao1101175783
  • 2014年03月14日 12:29
  • 1376

sql给已有表添加主键

/* ALTER TABLE [dbo].[cg_YearAssessZp] ALTER COLUMN YearAssessZpGUID UNIQUEIDENTIFIER NOT NULL; AL...
  • zzx3q
  • zzx3q
  • 2015年01月10日 15:37
  • 2859

通过sql语句修改表的主键和外键

首先建立两个表,用来测试,代码如下: sqlcreate table test(tt varchar(50) not nullprimary key (tt))create table myTest...
  • the_fire
  • the_fire
  • 2010年05月13日 02:14
  • 10469

SQL 判断要添加列的表中是否有主键

if exists(select 1 from sysobjects where parent_obj=object_id(tb) and xtype=PK)begin print 表中已经有主键,列...
  • zhangting1987
  • zhangting1987
  • 2008年03月06日 20:05
  • 1634

SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句

1、查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType='U' ORDER BY Name 结果:   2、查询数据...
  • deeplearnings
  • deeplearnings
  • 2017年08月26日 01:20
  • 322

数据库的主键表和外键表

想写这个是因为自己刚好在尝试建一个数据库,而数据库的各个表之间的关系不是很清楚,没有形成一个整体的关系,所以就尝试着将数据库形成一个整理的关系表,我 敢说很多跟我一样的同学原来做课程设计,肯定就是随...
  • qingtianweichong
  • qingtianweichong
  • 2013年03月24日 11:06
  • 6092

jdbc查找数据表的主键

导读:   大多数数据库有许多主键,但是在一个表中不允许两条记录的同一个主键具有相同的值。可以使用Java Database Connectivity(JDBC)来判断一个数据表的主键。   JDB...
  • alihoo
  • alihoo
  • 2008年06月23日 11:40
  • 1830

获取通过sql查询数据库的表,字段,主键,自增,字段类型等信息。

1.查询所有表,以及表的备注信息。 Oracle数据库 select t.table_name tableName, cmts.comments descr from user_tables t...
  • xiaozaq
  • xiaozaq
  • 2017年02月28日 08:53
  • 1250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:找SQL表的主键
举报原因:
原因补充:

(最多只允许输入30个字)