教您如何获得指定表SQL SERVER主键

教您如何获得指定表SQL SERVER主键,第1张

下面就将教您这种获得SQL SERVER主键的方法,希望对您学习SQL SERVER主键方面有所启迪。Declare @table_name varchar(100) Set @table_name='table_Pqs' --1、可以根据系统存储过程 Execute sp_pkeys @table_name --2、根据系统表获得 Declare @objectid int Set @objectid=object_id(@table_name) Select col_name(@objectid,colid) '主键字段' From sysobjects as o Inner Join sysindexes as i On iname=oname Inner Join sysindexkeys as k On kindid=iindid Where oxtype = 'PK' and parent_obj=@objectid and kid=@objectid 这里应用了sysobjects(对象表),sysindexes(索引表),sysindexkeys(索引键表)。这个查询直接获取对象表里主键的索引来获得的。

1、查表的时候需要用到user_tables、all_tables,user_tables查出来的是该用户拥有的表,all_tables查出来的是所有用户的表。
2、用sql查表的字段
查表的字段需要用到user_tab_columns、all_tab_columns,一样的前者只能查到该用户拥有的表,后者可以查询所有用户的表。

sql中的主键是指数据表的主关键词,用于唯一标识一个行,自带一级索引效果。

主关键字(主键,primarykey)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键,又称主码。

并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

扩展资料:

主键挑选的原则:

1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

SELECT
tTABLE_NAME,
tCONSTRAINT_TYPE,
cCOLUMN_NAME,
cORDINAL_POSITION
FROM
INFORMATION_SCHEMATABLE_CONSTRAINTS AS t,
INFORMATION_SCHEMAKEY_COLUMN_USAGE AS c
WHERE
tTABLE_NAME = cTABLE_NAME
AND tTABLE_SCHEMA = 'test'
AND tCONSTRAINT_TYPE = 'PRIMARY KEY';
测试执行结果如下:
mysql> SELECT
-> tTABLE_NAME,
-> tCONSTRAINT_TYPE,
-> cCOLUMN_NAME,
-> cORDINAL_POSITION
-> FROM
-> INFORMATION_SCHEMATABLE_CONSTRAINTS AS t,
-> INFORMATION_SCHEMAKEY_COLUMN_USAGE AS c
-> WHERE
-> tTABLE_NAME = cTABLE_NAME
-> AND tTABLE_SCHEMA = 'test'
-> AND tCONSTRAINT_TYPE = 'PRIMARY KEY'
-> LIMIT 3;
+------------+-----------------+-------------+------------------+
| TABLE_NAME | CONSTRAINT_TYPE | COLUMN_NAME | ORDINAL_POSITION |
+------------+-----------------+-------------+------------------+
| mr_dept | PRIMARY KEY | dept_id | 1 |
| order | PRIMARY KEY | id | 1 |
| tab | PRIMARY KEY | id | 1 |
+------------+-----------------+-------------+------------------+
3 rows in set (006 sec)

不知道你ACCESS数据库能不能使用
我本机 SQL Server 2008 Express 测试执行了一下,没啥问题查询tbDatumCity表中的主键
select from sysobjects where parent_obj=object_id('tbDatumCity') and xtype='PK'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13325419.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存