Oracle查询表结构建表语句索引等方式

 更新时间:2025年08月02日 08:44:58   作者:左眼看成爱  
使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.substr函数准备,建议优先使用USER_TAB_COLUMNS以减少混淆,参考Oracle官方文档ALL_TAB_COLS

Oracle查询表结构建表语句索引

--表的备注说明: user_tab_comments
--栏位的备注说明: user_col_comments
--系统视图 all_tab_cols  ALL_TAB_COLS描述了当前用户可访问的表,视图和群集的列。要收集此视图的统计信息,请使用ANALYZESQL语句或DBMS_STATS程序包。
--该视图与“ ALL_TAB_COLUMNS”不同之处在于,未过滤掉隐藏的列。
--使用时尽量使用USER_TAB_COLUMNS,以避免获取到oracle自行添加的隐藏字段。

--ORACLE 查询表结构
SELECT table_name, column_name, data_type,DATA_LENGTH,COLUMN_ID FROM USER_TAB_COLUMNS WHERE table_name =upper('b_notice')
select * from user_tab_columns where table_name='B_NOTICE'
SELECT * FROM all_tab_cols WHERE table_name =upper('b_notice')

--查看建表语句
select dbms_metadata.get_ddl('TABLE','B_NOTICE') from dual;

--查看oracle单个数据表包含的索引
select * from user_indexes where table_name=upper('B_NOTICE');

--查看哪些表哪些字段包含指定类型
SELECT table_name, column_name, data_type,DATA_LENGTH,COLUMN_ID FROM all_tab_cols WHERE data_type =upper('NVARCHAR2')

同样的表名:F_Flow_Step   

1.用“USER_TAB_COLUMNS”查询表结构

SELECT table_name, column_name, data_type,DATA_LENGTH,COLUMN_ID FROM USER_TAB_COLUMNS WHERE table_name =upper('F_Flow_Step') 

2.用“all_tab_COLUMNS”查询表结构

SELECT table_name, column_name, data_type,DATA_LENGTH,COLUMN_ID FROM ALL_TAB_COLUMNS WHERE table_name =upper('F_Flow_Step')

会发现“all_tab_COLUMNS” 比“USER_TAB_COLUMNS”多了很多同名字段。

比如:

USER_TAB_COLUMNS 里的LISTUSER字段,类型为CLOB 但是在all_tab_COLUMNS查询下出现了两个同名字段,除了CLOB类型的还有一个长度为2000的varchar2的Listuser,说明,这个字段也许是为dbms_lob.substr(clob_column)这个oracle内置的函数截取CLOB同名字段varchar2值所准备的用途(本人猜测)。

所以,建议查询表结构的时候使用USER_TAB_COLUMNS,避免查询出系统隐藏字段。

参考oracle官方资料:ALL_TAB_COLS

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 完美卸载Oracle数据库

    完美卸载Oracle数据库

    如果Oracle卸载不干净就会导致下次安装失败,这篇文章主要为大家详细介绍了Oracle完美卸载的全部过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Oracle特有的DECODE函数的使用

    Oracle特有的DECODE函数的使用

    Oracle中的DECODE函数是一种条件表达式函数,本文主要介绍了Oracle特有的DECODE函数的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Oracle数据库的字段约束创建和维护示例

    Oracle数据库的字段约束创建和维护示例

    本篇文章主要介绍了Oracle数据库的字段约束创建和维护示例,可以创建,添加,删除等约束,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • oracle DBMS_SQL.PARSE的使用方法和示例

    oracle DBMS_SQL.PARSE的使用方法和示例

    DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/SQL块,并将其存储在动态游标中,示例展示了如何使用该过程,资源管理、错误处理和权限是使用DBMS_SQL包时应注意的事项,感兴趣的朋友一起看看吧
    2025-02-02
  • oracle基本查询操作子查询用法实例分析

    oracle基本查询操作子查询用法实例分析

    这篇文章主要介绍了oracle基本查询操作子查询用法,结合实例形式分析了oracle数据库子查询相关概念、原理、语法、使用技巧与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • oracle中to_date详细用法示例(oracle日期格式转换)

    oracle中to_date详细用法示例(oracle日期格式转换)

    这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法、字符串和时间互转、求某天是星期几、两个日期间的天数、月份差等用法
    2014-01-01
  • Oracle生成单据编号存储过程的实例代码

    Oracle生成单据编号存储过程的实例代码

    Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号。下面给大家分享oracle生成单据编号存储过程,需要的的朋友参考下吧
    2017-04-04
  • Oracle出现超出打开游标最大数的两种解决方法

    Oracle出现超出打开游标最大数的两种解决方法

    当Oracle数据库中打开的游标数超过了数据库的最大游标数限制时,就会出现“超出打开游标最大数”的错误,本文给大家介绍了几种常见的解决方法,需要的朋友可以参考下
    2024-02-02
  • Oracle通过sqlplus连接数据库的方式

    Oracle通过sqlplus连接数据库的方式

    今天小编就为大家分享一篇关于Oracle通过sqlplus连接数据库的方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    本篇文章小编为大家介绍一下,浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献。有需要的朋友可以参考一下
    2013-04-04

最新评论