获取Oracle、SqlServer、Access中表名、字段和主键(转)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 一、oracle 1、获取当前oracle数据库中的所有表 select table_name from user_tables 2、查询某个表中的字段名称、类型、精度、长度、是否为空    select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA...

一、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    
  • 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,  8) 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    
  •  where f.rkeyid=col.id    
  •  and f.rkey=col.colid    
  •  and f.constid in    
  •  ( select distinct(id)    
  •    from sysobjects    
  •    where OBJECT_NAME(parent_obj)='YourTableName'    
  •    and xtype='F'    
  •  )    
  • as t2    
  • where t1.temp=t2.temp

三、Access

1、所有表清单

  •  conn.Open();
        dt= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

2、表结构

conn.Open();

   dtColumnsInfo = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, strTableName,null });

 

 

原文链接:http://blog.sina.com.cn/dongshengjing

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
打赏
0
0
0
0
10
分享
相关文章
MySQL数据库: 添加列、修改列、删除列、修改列属性、修改表名(包括MySQL、SQLServer、Oracle)
MySQL数据库: 添加列、修改列、删除列、修改列属性、修改表名(包括MySQL、SQLServer、Oracle)
484 0
MySQL数据库: 添加列、修改列、删除列、修改列属性、修改表名(包括MySQL、SQLServer、Oracle)
Oracle迁移PPAS:中文表名的处理
Oracle迁移到RDS for PPAS(PostgreSQL)时我们会用到很多不同的工具,在中国有些用户会用 中文 作为表名,甚至字段名。迁移可能会出现ERROR: zero-length delimited identifier at or near """"的错误。针对于此,做了以下DEM.
4791 0
Oracle性能优化学习笔记之选择最有效率的表名顺序
        选择最有效率的表名顺序(只在基于规则的优化器中有效)        ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FR
962 0
如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
1、查找表的所有索引(包括索引名,类型,构成列):  select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表  2、查找表的主键(包括名
2630 0
Oracle列出数据库所有表名和列名
1 显示所有表名:select table_name from user_tables; 2 显示所有列名: select OWNER, TABLE_NAME, COLUMN_NA...
1517 0
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
786 28
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问