Oracle有没有类似MySQL的show table命令?

5

我知道可以使用以下方法:

SELECT DISTINCT(table_name) 
  FROM all_tab_cols

在Oracle中,是否有更好的方法来显示表格,例如MySQL中的show table命令?

6个回答

8
如果您需要完整的结构,可以使用。
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' ) FROM DUAL;

参考文献中查看更多语法。

1
此外,在sqlplus中,您可以尝试使用“describe <owner>.<table_name>;” - Pop
1
@Pop:DESCRIBE 不是 SQLPlus 特定的,它只提供一个表的信息,而不是数据库和/或模式中的所有表的信息。 - OMG Ponies
以字符串形式而非CLOB查看结果,我们可以使用以下语句: SELECT to_char(dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' )) FROM DUAL; - Ahmed Nabil

4
尝试在SQL*Plus中使用describe table <table-name>命令。它可以获取所有信息并进行美观的格式化。该命令适用于表格、存储过程、触发器、约束等(只需更换不同的关键字即可)。

1

你可以做到

select * from user_tables;

获取基本内容。仅获取表名:

select table_name from user_tables;

user_tables 是你的用户可以访问的表--而 all_tab 没有这个限制。 - OMG Ponies
user_tables列出了用户自己架构中的表。all_tables列出了用户被授予权限访问的所有表。如果用户拥有DBA角色,则可以使用dba_tables列出所有架构中的所有表。 - Rene

1
describe <table-name>

在 SQL*Plus 中

0

当然,这取决于您的使用方式。您是需要在程序中使用信息,还是想要自己查看表结构?许多工具都可以让您查看表结构,包括:PLSQL开发人员、Toad for Oracle、SQLDeveloper。如果您想在查询中使用表结构,最好使用Oracle数据字典视图(user_...,all_...,dba_...)。


0

如果想返回属于当前用户/模式的所有表,请在Oracle数据库中运行以下查询:

SELECT TABLE_NAME FROM USER_TABLES;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接