Oracle查看表结构的多种方法详解

 更新时间:2026年05月13日 09:17:46   作者:穆金秋  
本文介绍了Oracle查看表结构的多种方法,包括使用DESCRIBE、查询数据字典视图、获取建表语句等,并将Oracle与MySQL进行了对比,Oracle提供了更详细的信息,但需要使用更多的命令,需要的朋友可以参考下

Oracle提供了多种查看表结构的方法:

  • 1. 使用DESCRIBE命令快速查看列名和类型;
  • 2. 查询USER_TAB_COLUMNS获取详细列信息;
  • 3. 通过USER_COL_COMMENTS查看列注释;
  • 4. 使用USER_CONSTRAINTS查询约束信息;
  • 5. 调用DBMS_METADATA.GET_DDL获取完整建表语句。

相比MySQL的DESC命令,Oracle的数据字典视图提供了更全面的表结构信息,包括列属性、约束、注释等。

开发人员可根据需求选择不同方法,从简单查看列名到获取完整DDL语句。

Oracle 没有像 MySQL 的 DESC 或 SHOW COLUMNS 那样简单的命令,但有多种方式可以查看表结构。

一、使用 DESCRIBE(最常用)

DESC actor;
-- 或
DESCRIBE actor;

输出示例:

Name         Null? Type
------------ ----- -------------
ACTOR_ID     NOT NULL NUMBER(5)
FIRST_NAME   NOT NULL VARCHAR2(45)
LAST_NAME    NOT NULL VARCHAR2(45)
LAST_UPDATE  NOT NULL DATE
CREATE_DATE  NOT NULL DATE

二、查询数据字典视图(最详细)

2.1 查看列信息

-- 查看指定表的所有列
SELECT 
    COLUMN_NAME,
    DATA_TYPE,
    DATA_LENGTH,
    NULLABLE,
    DATA_DEFAULT
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = 'ACTOR'
ORDER BY COLUMN_ID;

2.2 查看详细列信息(含注释)

SELECT 
    a.COLUMN_NAME,
    a.DATA_TYPE,
    a.DATA_LENGTH,
    a.NULLABLE,
    b.COMMENTS
FROM USER_TAB_COLUMNS a
LEFT JOIN USER_COL_COMMENTS b 
    ON a.TABLE_NAME = b.TABLE_NAME 
    AND a.COLUMN_NAME = b.COLUMN_NAME
WHERE a.TABLE_NAME = 'ACTOR'
ORDER BY a.COLUMN_ID;

三、数据字典视图对比

视图作用说明
USER_TAB_COLUMNS当前用户拥有的表列信息最常用
ALL_TAB_COLUMNS当前用户可访问的所有表列权限范围更广
DBA_TAB_COLUMNS数据库所有表的列需要 DBA 权限
USER_COL_COMMENTS当前用户表的列注释查看 COMMENT
USER_CONSTRAINTS当前用户表的约束信息查看主键、外键等
USER_IND_COLUMNS当前用户表的索引列查看索引信息

四、综合查询示例

查看表完整结构(列+约束+注释)

-- 列信息 + 注释
SELECT 
    t.COLUMN_ID,
    t.COLUMN_NAME,
    t.DATA_TYPE,
    t.DATA_LENGTH AS "LENGTH",
    t.NULLABLE,
    c.COMMENTS
FROM USER_TAB_COLUMNS t
LEFT JOIN USER_COL_COMMENTS c 
    ON t.TABLE_NAME = c.TABLE_NAME AND t.COLUMN_NAME = c.COLUMN_NAME
WHERE t.TABLE_NAME = UPPER('actor')
ORDER BY t.COLUMN_ID;

查看主键信息

SELECT 
    a.COLUMN_NAME,
    a.CONSTRAINT_NAME
FROM USER_CONS_COLUMNS a
JOIN USER_CONSTRAINTS b 
    ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE b.TABLE_NAME = 'ACTOR' 
    AND b.CONSTRAINT_TYPE = 'P';

五、MySQL vs Oracle 查看表结构对比

操作MySQLOracle
简单查看DESC actor;DESC actor;
查看列详情SHOW COLUMNS FROM actor;SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='ACTOR';
查看建表语句SHOW CREATE TABLE actor;SELECT DBMS_METADATA.GET_DDL('TABLE','ACTOR') FROM DUAL;
查看注释SHOW FULL COLUMNS FROM actor;SELECT * FROM USER_COL_COMMENTS;
查看索引SHOW INDEX FROM actor;SELECT * FROM USER_IND_COLUMNS;
查看约束用 SHOW CREATE TABLESELECT * FROM USER_CONSTRAINTS;

六、获取建表语句(DDL)

-- Oracle 特有方式
SELECT DBMS_METADATA.GET_DDL('TABLE', 'ACTOR') FROM DUAL;

-- 如果表属于其他用户(如 SCOTT)
SELECT DBMS_METADATA.GET_DDL('TABLE', 'ACTOR', 'SCOTT') FROM DUAL;

输出示例:

CREATE TABLE "SCOTT"."ACTOR" (
   "ACTOR_ID"    NUMBER(5) NOT NULL ENABLE,
   "FIRST_NAME"  VARCHAR2(45) NOT NULL ENABLE,
   "LAST_NAME"   VARCHAR2(45) NOT NULL ENABLE,
   "LAST_UPDATE" DATE NOT NULL ENABLE,
   "CREATE_DATE" DATE DEFAULT TO_DATE('2020-10-01','YYYY-MM-DD') NOT NULL ENABLE,
   PRIMARY KEY ("ACTOR_ID") ENABLE
)

七、常用快捷命令总结

命令/查询用途
DESC 表名快速查看列名和类型
SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='表名';查看列详细信息
SELECT * FROM USER_COL_COMMENTS WHERE TABLE_NAME='表名';查看列注释
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='表名';查看约束
SELECT DBMS_METADATA.GET_DDL('TABLE','表名') FROM DUAL;获取完整建表语句

到此这篇关于Oracle查看表结构的多种方法的文章就介绍到这了,更多相关Oracle查看表结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Oracle中SqlLoader的用法

    关于Oracle中SqlLoader的用法

    这篇文章主要介绍了关于Oracle中SqlLoader的用法,sqlldr是oracle的sql*loader工具,他可以把外部的文本格式数据导入到oracle的内部表中,适用于不同数据库之间的数据转化迁移,需要的朋友可以参考下
    2023-07-07
  • oracle添加序号列3种方法大全

    oracle添加序号列3种方法大全

    Oracle是众多的关系型数据库系统之一,它可以为表格中的每一行创建唯一的序号列,这篇文章主要给大家介绍了关于oracle添加序号列的3种方法大全,需要的朋友可以参考下
    2024-03-03
  • PL/SQL数据类型及操作符

    PL/SQL数据类型及操作符

    PL/SQL数据类型及操作符...
    2007-03-03
  • Oracle字符串拆分实例详解

    Oracle字符串拆分实例详解

    这篇文章主要给大家介绍了关于Oracle字符串拆分的相关资料,Oracle提供了多种分割函数,其中最常用的是REGEXP_SUBSTR函数,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Navicat连接Oracle数据库的详细步骤与注意事项

    Navicat连接Oracle数据库的详细步骤与注意事项

    Navicat是一套可创建多个连接的数据库管理工具,用以方便管理各种数据库,下面这篇文章主要给大家介绍了关于Navicat连接Oracle数据库的详细步骤与注意事项,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Oracle清理监听文件的几种安全方式

    Oracle清理监听文件的几种安全方式

    本文介绍了安全删除或清理Oracle监听日志文件的方法,推荐使用lsnrctl重新启动监听或在线截断日志,避免直接删除正在写入的文件,需要的朋友可以参考下
    2025-12-12
  • Oracle 多参数查询语句

    Oracle 多参数查询语句

    这篇文章主要介绍了Oracle 多参数查询语句 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • Oracle连接数据库提示ORA-12638:身份证明检索失败的解决办法

    Oracle连接数据库提示ORA-12638:身份证明检索失败的解决办法

    今天在使用应用程序连接Oracle时碰到了"ORA-12638:身份证明检索失败"错误,给大家总结解决方法,这篇文章主要给大家介绍了关于Oracle连接数据库提示ORA-12638:身份证明检索失败的解决办法,需要的朋友可以参考下
    2023-10-10
  • Oracle Scheduler任务故障诊断方法实战指南

    Oracle Scheduler任务故障诊断方法实战指南

    Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,这篇文章主要介绍了Oracle Scheduler任务故障诊断方法的相关资料,需要的朋友可以参考下
    2025-09-09
  • oracle 11g RAC 常用命令整理分享

    oracle 11g RAC 常用命令整理分享

    很多朋友会经常用到oracle 11g RAC的命令,今天我也用到了,同时也整理了一些常用的命令,以备不时之需
    2012-11-11

最新评论