zoukankan      html  css  js  c++  java
  • 获取oracle 表字段,表名,以及主键之类等等的信息。

    获取表名:

     Oracle的user_talbes用于记录了用户表信息。

    select * from user_tables

     获取某个表的字段:

    USER_TAB_COLS中记录了用户表的列信息。下面是别人写的:

    SELECT USER_TAB_COLS.TABLE_NAME as 表名,USER_TAB_COLS.COLUMN_NAME as 列名 , USER_TAB_COLS.DATA_TYPE as 数据类型, USER_TAB_COLS.DATA_LENGTH as 长度, USER_TAB_COLS.NULLABLE as 是否为空,USER_TAB_COLS.COLUMN_ID as 列序号,user_col_comments.comments as 备注 FROM USER_TAB_COLS inner join user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME

    如何从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;表字段注释

            以上两个只能获取自己用户的表的注释信息,如果要访问自己能够访问的其他用户的表,则需要使用:

            all_tab_comments;表注释

            all_col_comments;表字段注释

            当然,如果有DBA权限,则可以使用

            dba_tab_comments;表注释

            dba_col_comments;表字段注释

            dba*和all*最好指定owner条件。user*没有该字段

    关于Oracle与SqlServer中获取所有字段、主键、外键的sql语句 标签: 主键  外键  sql  
    最近在做的社会网络分析原型系统需要将多种不同数据库中的表的字段、主外键信息读出,实现这些功能费了不少功夫,记录下来以备用吧
    Oracle:
    查询某个表中的字段名称、类型、精度、长度、是否为空
    select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE 
    from user_tab_columns 
    where table_name ='YourTableName'
    查询某个表中的主键字段名
    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'
    查询某个表中的外键字段名称、所引用表名、所应用字段名
    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'

    SQLServer中的实现:
    字段:
    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

    主键(参考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)       
         )

    外键:
    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

    就是这些,都是平时积累下来的,摘自己需要的用吧。

  • 相关阅读:
    js对象数组(JSON) 根据某个共同字段 分组
    一个 函数 用来转化esSearch 的range 条件
    关于 vuex 报错 Do not mutate vuex store state outside mutation handlers.
    android listview 重用view导致的选择混乱问题
    android SDK和ADT的更新
    Android中adb push和adb install的使用区别
    pycharm中添加扩展工具pylint
    su Authentication failure解决
    Putty以及adb网络调试
    有关android源码编译的几个问题
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2426810.html
Copyright © 2011-2022 走看看