• 获取oracle 表字段,表名,以及主键之类等等的信息


    数据库版本号:select * from v$version

    数据库名:select * from v$instance

    注意:
    我在C#项目中查询语句的时候报“ORA-00911: 无效字符” 的错误,原因竟然是在查询语句后面多了个分号“;”的原因,分号在plsql中属于正常,在项目中则属于无效字符,希望可以给大家提醒。

    参考出处:http://www.cnblogs.com/zhangronghua/archive/2007/08/29/874484.html

    使用关键字作为字段名

    1:使用关键字作为字段别名
    2:使用关键字作为数据库的字段名

    在我们开发或使用的过程中经常要使用特定的字段名,这时候我们可以给数据库的字段取别名,这个别名有可能是数据库的关键字,这时我们可以给别名加上双引号:

    select 'abcd' "group" from dual
    select systimestamp "select" from dual

    在使用数据库的时候DBA就需要定义字段的名字就是数据库的关键字,这时也必须使用双引号,并且关键字必须大写,经常用到的语句有:

    CREATE 、INSERT 、UPDATE 、SELECT 这些语句必须使用双引号,并且关键字必须大写。

    总结:

    1:如果在别名中使用关键字,必须使用双引号括起来"关键字",关键字可以不大写。
    2:如果是数据库字段名就是关键字,在操作时语句必须使用双引号,并且关键字必须大写。
    3:如果不是特殊情况最好不要使用,以免引起代码编写过程中的错误。

    参考出处:http://www.2cto.com/database/201212/172909.html

    获取表名:

     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,data_default
    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 col.column_name , uc.constraint_type,case uc.constraint_type when 'P' then '√' else '' end "PrimaryKey"
    from user_tab_columns col left join user_cons_columns ucc on ucc.table_name=col.table_name and ucc.column_name=col.column_name
    left join user_constraints uc on uc.constraint_name = ucc.constraint_name and uc.constraint_type='P'
    where 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

    出处:http://blog.csdn.net/jack_zy1981/article/details/5699787

  • 相关阅读:
    股票数据接口
    体育健身
    高并发指标
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第10波-快速排列工作表图形对象
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第9波-数据透视表自动设置
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第8波-快速可视化数据
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第7波-智能选区功能
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第6波-导出PowerbiDesktop模型数据字典
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第5波-使用DAX查询从PowerbiDeskTop中获取数据源
    个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第4波-一大波自定义函数高级应用,重新定义Excel函数的学习和使用方法
  • 原文地址:https://www.cnblogs.com/mq0036/p/3909934.html
Copyright © 2020-2023  润新知