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

一、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

时间: 2024-08-02 14:49:01

获取Oracle、SqlServer、Access中表名、字段和主键(转)的相关文章

Access如何在字段定义主键

  1.打开你的access,并打开你要设置主键的数据表,然后点击 开始--视图. 2.在视图的下拉菜单中,点击 设计视图. 3.来到了设计视图面板,我们在要设立主键的字段的右边,也就是红色箭头的位置右键单击 4.在弹出的菜单中,我们选择 主键.这样就给ID这个字段建立的主键. 5.另一个方法就是我们选中将要建立主键的字段,然后再菜单栏上点击 主键. 6.最后点击左上角的保存按钮,将主键进行保存. 7.点击视图按钮,返回数据表视图.

如何获取oracle中某表的字段类型。

问题描述 如何获取oracle中某表的字段类型. 解决方案 使用JDBC就可以的// 获取数据库的连接这些操作我就省了PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM H_TEST");ResultSet rs = pstmt.executeQuery();ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名if(rsmd != null){ int count

Access教程 如何在字段定义主键

  通常数据表都要定义主键,不然系统会提示你建立主键,那么该怎么建立呢?下面就让第九软件小编给大家演示操作一遍吧! 具体操作步骤如下: 1.打开你的access,并打开你要设置主键的数据表,然后点击 开始--视图. 2.在视图的下拉菜单中,点击 设计视图. 3.来到了设计视图面板,我们在要设立主键的字段的右边,也就是红色箭头的位置右键单击 4.在弹出的菜单中,我们选择 主键.这样就给ID这个字段建立的主键. 5.另一个方法就是我们选中将要建立主键的字段,然后再菜单栏上点击 主键. 6.最后点击左

Oracle与Access表之间的导入和导出实现

问题的提出:如何在FORM的程序中实现Oracle与Access表之间的导入和导出. 问题的解答: 准备工作: 1.安装OCA.运行Developer的安装盘,选择自定义安装,选择Oracle Open Client Adapter for ODBC安装. 2.在数据源(ODBC)中添加DSN.控制面板->管理工具->数据源(ODBC),选择"用户DSN",添加要进行操作的Access的文件.在"高级"选项里,填上"登录名称"和&qu

oracle修改一个表中的主键字段值,与其外键关联的另一个表中的相应字段值也改变

问题描述 oracle修改一个表中的主键字段值,与其外键关联的另一个表中的相应字段值也改变 oracle 中修改一个表中的主键字段值,与其外键关联的另一个表中的相应字段值也改变? 有如下两张表,表a和表b 表a 结构如下: ID Name age 1 lisi 18 2 wangwu 21 3 sunliu 34 4 yiliu 24 ... ... ... 其中ID字段为表a主键且自增 表b结构如下: CID CNAME ID 1 aaaaa 1 2 bbbbb 2 3 cccccc 4 4

sql-MySQL 主键约束用约束名无法删除,新手求解答

问题描述 MySQL 主键约束用约束名无法删除,新手求解答 环境 MySQL5.5,如图创建一个表. 先加个主键约束 然后用约束名再删除主键约束 用约束名删除报错,后来又试了下不用约束名 这次成功了,求教大家怎么用约束名删除主键约束啊!希望能详细解答一下两者结果不同的原因,不胜感激! 解决方案 mysql 中删除约束的语法: ALTER TABLE TABLE_name DROP [COLUMN] col_name DROP PRIMARY KEY DROP INDEX index_name D

asp获取数据库中表名和字段名的代码_数据库相关

复制代码 代码如下: < % '功能:显示数据库中表名.字段名.字段内容 '原创:wangsdong '原创文章,转载请保留此信息,谢谢 set rs=server.CreateObject("adodb.recordset") db="db1.mdb" set conn=server.CreateObject("adodb.connection") connstr="Provider=Microsoft.Jet.OLEDB.4.

在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库

access|js|oracle|server|sqlserver|访问|数据|数据库 在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库现在有好多初学jsp的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发.在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类

asp如何获取access数据库的字段说明

asp如何获取access数据库的字段说明代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>提取access字段的说明信息</title></head><%dim table                  table = trim(request(&qu