【发布时间】:2016-07-12 11:57:25
【问题描述】:
我是 Oracle 新手,想查找用户 'john' 创建的所有表。
我通过以下命令通过命令行连接到Oracle数据库:
sqlplus john/passwd
如何列出给定用户创建的所有表,例如约翰?
【问题讨论】:
我是 Oracle 新手,想查找用户 'john' 创建的所有表。
我通过以下命令通过命令行连接到Oracle数据库:
sqlplus john/passwd
如何列出给定用户创建的所有表,例如约翰?
【问题讨论】:
这将获得“JOHN”用户为所有者的所有表:
SELECT * FROM USER_TABLES;
或
SELECT * FROM ALL_TABLES WHERE OWNER = 'JOHN';
([TL;DR] 'JOHN' 通常需要大写。假设用户 john 是使用 CREATE USER john ... 语句创建的,那么 Oracle 的默认行为是转换所有对象名称 (即表,列,用户等)为大写。当您查询数据字典时,表详细信息将存储在这种情况下(而不是您在原始命令中使用的情况,除非您将其用双引号括起来)。)
【讨论】:
ALL_ALL_TABLES 以获取所有内容。
列出您可以使用的表格
SELECT * FROM ALL_TABLES WHERE OWNER = 'JOHN';
查看您可以使用的架构的大小
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'JOHN'
由于您是作为架构所有者登录的,因此您也可以使用
SELECT SUM(bytes)
FROM user_segments
【讨论】:
你也可以用
select * from
USER_TABLES;
无论如何你都可以在这里找到所有数据字典的解释https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables014.htm
【讨论】:
select * from
USER_TABLES;
上面的代码将显示当前连接的用户下的所有表的信息。这可能会使您的 SQL 终端混乱。
要专门查看用户名下的表名,您应该使用以下代码
select table_name
from USER_TABLES;
【讨论】:
试试:
select *
from all_tables
where owner = 'jhon';
【讨论】:
'JOHN'