sql如何查找一张表中所有的主键字段,我已经写好了查找一个主键的,多个主键的怎么写额

sql如何查找一张表中所有的主键字段,我已经写好了查找一个主键的,多个主键的怎么写额,第1张

WHERE id = Object_id('表名')改这样试试User1和User4是主键,这样去查询的话得到的主键是User1、User2回答: 给你一句很给力的SELECT 表名 = case when acolorder=1 then dname else '' end, 表说明 = case when acolorder=1 then isnull(fvalue,'') else '' end, 字段序号 = acolorder, 字段名 = aname, 标识 = case when COLUMNPROPERTY( aid,aname,'IsIdentity')=1 then '√'else '' end, 主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=aid and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = aid AND colid=acolid))) then '√' else '' end, 类型 = bname, 占用字节数 = alength, 长度 = COLUMNPROPERTY(aid,aname,'PRECISION'), 小数位数 = isnull(COLUMNPROPERTY(aid,aname,'Scale'),0), 允许空 = case when aisnullable=1 then '√'else '' end, 默认值 = isnull(etext,''), 字段说明 = isnull(g[value],'') FROM syscolumns a left join systypes b on axusertype=bxusertype inner join sysobjects d on aid=did and dxtype='U' and dname<>'dtproperties' left join syscomments e on acdefault=eid left join sysproperties g on aid=gid and acolid=gsmallid left join sysproperties f on did=fid and fsmallid=0 where dname='要查询的表' --如果只查询指定表,加上此条件 order by aid,acolorder 补充: SELECT TABLE_NAME,COLUMN_NAME

alter table tablename alter primary key (column1,column2,)\x0d\如果不行,先把主键drop掉,再加\x0d\alter table tablename drop primary key\x0d\alter table tablename add primary key (column1,column2,)\x0d\百度应该也可以搜到的~

创建表时指定primary key,如:
create table mytab(id int not null primary key,
name char(10)
)
注意,not null 不可省略,必须与primary key 同时指定!

1、查找表的所有索引(包括索引名,类型,构成列):\x0d\\x0d\selectt,iindex_typefromuser_ind_columnst,user_indexesiwheretindex_name=iindex_nameandttable_name=itable_nameandttable_name=要查询的表\x0d\\x0d\2、查找表的主键(包括名称,构成列):\x0d\\x0d\selectcufromuser_cons_columnscu,user_constraintsauwherecuconstraint_name=auconstraint_nameandauconstraint_type='P'andautable_name=要查询的表\x0d\\x0d\3、查找表的唯一性约束(包括名称,构成列):\x0d\\x0d\selectcolumn_namefromuser_cons_columnscu,user_constraintsauwherecuconstraint_name=auconstraint_nameandauconstraint_type='U'andautable_name=要查询的表\x0d\\x0d\4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):\x0d\\x0d\selectfromuser_constraintscwherecconstraint_type='R'andctable_name=要查询的表\x0d\\x0d\查询外键约束的列名:\x0d\\x0d\selectfromuser_cons_columnsclwhereclconstraint_name=外键名称\x0d\\x0d\查询引用表的键的列名:\x0d\\x0d\selectfromuser_cons_columnsclwhereclconstraint_name=外键引用表的键名\x0d\\x0d\5、查询表的所有列及其属性\x0d\\x0d\selectt,cCOMMENTSfromuser_tab_columnst,user_col_commentscwherettable_name=ctable_nameandtcolumn_name=ccolumn_nameandttable_name=要查询的表\x0d\\x0d\6、Oracle中每个用户表的表名和行数\x0d\selecttable_name,num_rowsfromuser_tables;\x0d\\x0d\7、Oracle查询用户表空间:selectfromuser_all_tables\x0d\\x0d\8、Oracle查询所有函数和储存过程:selectfromuser_source\x0d\\x0d\9、Oracle查询所有用户:\x0d\selectfromall_users;\x0d\selectfromdba_users\x0d\\x0d\10、Oracle查看当前用户连接:selectfromv$Session\x0d\\x0d\11、Oracle查看当前用户权限:selectfromsession_privs\x0d\\x0d\12、Oracle查看用户表空间使用情况:\x0d\\x0d\selectafile_id"FileNo",atablespace_name\x0d\\x0d\"Tablespace_name",\x0d\\x0d\abytes"Bytes",abytes-sum(nvl(bbytes,0))"Used",\x0d\\x0d\sum(nvl(bbytes,0))"Free",\x0d\\x0d\sum(nvl(bbytes,0))/abytes100"%free"\x0d\\x0d\fromdba_data_filesa,dba_free_spaceb\x0d\\x0d\whereafile_id=bfile_id(+)\x0d\\x0d\groupbyatablespace_name,\x0d\\x0d\afile_id,abytesorderbyatablespace_name;

这样查看表结构:
describe select photo_format from emp_photo
db2 => describe select photo_format from emp_photo
SQLDA Information
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 1
Column Information
sqltype sqllen sqlnamedata sqlnamelength
448 VARCHAR 10 PHOTO_FORMAT 12
describe select from emp_photo
db2 => describe select from emp_photo
SQLDA Information
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 3
Column Information
sqltype sqllen sqlnamedata sqlnamelength s
qllonglen sqldatatype_namedata sqldatatype_namelength
452 CHARACTER 6 EMPNO 5
0 SYSIBM CHARACTER 18
448 VARCHAR 10 PHOTO_FORMAT 12
0 SYSIBM VARCHAR 16
405 BLOB 0 PICTURE 7
102400 SYSIBM BLOB 13

有几种方法可以在Teradata中获取PK / FK信息,但如果没有为表定义PK / FK,则所有信息都可能失败。并且很有可能(特别是对于FK)他们没有在数据仓库中定义。在这种情况下,您需要在数据模型上获得一些外部文档。

_bcIndicesV包含所有索引,但每个索引每列有一行,例如4列PK导致4行,以“ColumnPosition”顺序定义:

__niqueFlag”='Y'表示它是唯一索引

__ndexType”表示在Create Table中的定义方式: 'K'=主键,'U'=唯一约束,'P'=主要索引,'S'=次要索引

_bcAll_ri_childrenV保存已定义的FK。

_绻鲇糜诘ジ霰恚蛩饕摹_ELP INDEX my_table”,但在这种情况下,我更喜欢“SHOW TABLE my_table”,它返回完整的源代码。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存