当前位置:操作系统 > Unix/Linux >>

查表的字段名,主键,字段类型的语句


查表的字段名,主键,字段类型的语句
 
一、oracle 
 
1、获取当前oracle数据库中的所有表 
 
select table_name from user_tables 
 
2、查询某个表中的字段名称、类型、精度、长度、是否为空   
 
select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE     
from user_tab_columns     
where table_name ='YourTableName'   
3、查询某个表中的主键字段名   
 
select col.column_name     
from user_constraints con,  user_cons_columns col     
where con.constraint_name = col.constraint_name     
and con.constraint_type='P'     
and col.table_name = 'YourTableName'   
4、查询某个表中的外键字段名称、所引用表名、所应用字段名   
 
select distinct(col.column_name),r.table_name,r.column_name     
from     
user_constraints con,    
user_cons_columns col,     
(select t2.table_name,t2.column_name,t1.r_constraint_name     
from user_constraints t1,user_cons_columns t2     
where t1.r_constraint_name=t2.constraint_name     
and t1.table_name='YourTableName'   
) r    www.zzzyk.com     
where con.constraint_name=col.constraint_name     
and con.r_constraint_name=r.r_constraint_name     
and con.table_name='YourTableName'  

5、如何从Oracle中取得表的注释 
 
       user_tab_comments;表注释 
 
        user_col_comments;表字段注释 
 
  以上两个只能获取自己用户的表的注释信息,如果要访问自己 
 
能够访问的其他用户的表,则需要使用: 
 
        all_tab_comments;表注释 
 
        all_col_comments;表字段注释 
 
  当然,如果有DBA权限,则可以使用 
 
        dba_tab_comments;表注释 
 
        dba_col_comments;表字段注释 
 
  dba*和all*最好指定owner条件。user*没有该字段 
 
        user_tab_comments;表注释 
 
        user_col_comments;表字段注释 
 
二、SQLServer 
 
1、读取库中的所有表名 
  select name from sysobjects where xtype='u'  
 
2、字段  
SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable     
FROM systypes t,syscolumns c     
WHERE t.xtype=c.xtype     
AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName')     
ORDER BY c.colid    
3、主键(参考SqlServer系统存储过程sp_pkeys)   
 
select COLUMN_NAME = convert(sysname,c.name)                   
from                                                           
sysindexes i, syscolumns c, sysobjects o                       
where o.id = object_id('[YourTableName]')                      
and o.id = c.id                                                
and o.id = i.id                                                
and (i.status & 0x800) = 0x800                                 
and (c.name = index_col ('[YourTableName]', i.indid,  1) or         
     c.name = index_col ('[YourTableName]', i.indid,  2) or         
     c.name = index_col ('[YourTableName]', i.indid,  3) or         
     c.name = index_col ('[YourTableName]', i.indid,  4) or         
     c.name = index_col ('[YourTableName]', i.indid,  5) or         
     c.name = index_col ('[YourTableName]', i.indid,  6) or         
     c.name = index_col ('[YourTableName]', i.indid,  7) or         
     c.name = index_col ('[YourTableName]', i.indid,  or         
     c.name = index_col ('[YourTableName]', i.indid,  9) or         
     c.name = index_col ('[YourTableName]', i.indid, 10) or         
     c.name = index_col ('[YourTableName]', i.indid, 11) or         
     c.name = index_col ('[YourTableName]', i.indid, 12) or         
     c.name = index_col ('[YourTableName]', i.indid, 13) or         
     c.name = index_col ('[YourTableName]', i.indid, 14) or         
     c.name = index_col ('[YourTableName]', i.indid, 15) or         
     c.name = index_col ('[YourTableName]', i.indid, 16)           
     )    
4、外键   
 
select t1.name,t2.rtableName,t2.name     
from     
(select col.name, f.constid as temp     
from syscolumns col,sysforeignkeys f     
where f.fkeyid=col.id     
and f.fkey=col.colid     
and f.constid in     
( select distinct(id)      
   from sysobjects     
   where OBJECT_NAME(parent_obj)='YourTableName'     
   and xtype='F'     
  )     
) as t1 ,     
(select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp     
from syscolumns col,sysforeignkeys f   www.zzzyk.com      
where f.rkeyid=col.id     
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,