如何在 SQLPlus Oracle select 中指定 tablespace_name
How to specify tablespace_name in SQLPlus Oracle select
我的设置是这样的
SQL> SELECT tablespace_name, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
TABLESPACE_NAME TABLE_NAME
-------------------------- ------------------------------
MYSPACE MYTABLENAME
MYSPACE MYOTHERTABLENAME
现在我想 SELECT * FROM MYSPACE.MYTABLENAME;
但显然你不是这样做的。
ERROR at line 1:
ORA-00942: table or view does not exist
我的预期结果是从 table 中获取所有记录。如果它是 MySQL.
就像我会的一样
谢谢
您 select 来自表空间,这与您的 Owner/Schema 名称不同。这就是为什么。例如,表空间 SYSTEM
拥有所有者 SYS
。你从 Sys.xxx;
做 select
好的。
SELECT owner, tablespace_name, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
然后
select * from [ owner ].[ table_name ];
(值得一提:select .. 来自 dba_tables
/ user_tables
)
表不属于 table空间。 table空格是a logical storage storage structure. When you create a table (or index) you specify which tablespace its contents should be stored in。除非您正在执行 DBA 任务,否则您真的不需要知道您的数据存储在哪个 table 空间中。
您可能只是混淆了术语。表归 schemas 所有。如果您查询 owner
列而不是 tablespace_name
列,您可能会看到如下内容:
SQL> SELECT owner, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
OWNER TABLE_NAME
-------------------------- ------------------------------
MYUSER MYTABLENAME
MYUSER MYOTHERTABLENAME
然后您可以使用
从中查询
SELECT * FROM MYOWNER.MYTABLENAME;
当然,如果无论如何所有者实际上是您,那么您不需要在 table 名称前加上模式;你可以 select FROM MYTABLENAME
。 (您可能还拥有使模式前缀变得不必要的同义词或会话设置,但这有点离题)。如果您拥有 table,您也会在 USER_TABLES
中看到它。
我的设置是这样的
SQL> SELECT tablespace_name, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
TABLESPACE_NAME TABLE_NAME
-------------------------- ------------------------------
MYSPACE MYTABLENAME
MYSPACE MYOTHERTABLENAME
现在我想 SELECT * FROM MYSPACE.MYTABLENAME;
但显然你不是这样做的。
ERROR at line 1:
ORA-00942: table or view does not exist
我的预期结果是从 table 中获取所有记录。如果它是 MySQL.
就像我会的一样谢谢
您 select 来自表空间,这与您的 Owner/Schema 名称不同。这就是为什么。例如,表空间 SYSTEM
拥有所有者 SYS
。你从 Sys.xxx;
好的。
SELECT owner, tablespace_name, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
然后
select * from [ owner ].[ table_name ];
(值得一提:select .. 来自 dba_tables
/ user_tables
)
表不属于 table空间。 table空格是a logical storage storage structure. When you create a table (or index) you specify which tablespace its contents should be stored in。除非您正在执行 DBA 任务,否则您真的不需要知道您的数据存储在哪个 table 空间中。
您可能只是混淆了术语。表归 schemas 所有。如果您查询 owner
列而不是 tablespace_name
列,您可能会看到如下内容:
SQL> SELECT owner, table_name
FROM all_tables
WHERE tablespace_name = 'MYSPACE';
OWNER TABLE_NAME
-------------------------- ------------------------------
MYUSER MYTABLENAME
MYUSER MYOTHERTABLENAME
然后您可以使用
从中查询SELECT * FROM MYOWNER.MYTABLENAME;
当然,如果无论如何所有者实际上是您,那么您不需要在 table 名称前加上模式;你可以 select FROM MYTABLENAME
。 (您可能还拥有使模式前缀变得不必要的同义词或会话设置,但这有点离题)。如果您拥有 table,您也会在 USER_TABLES
中看到它。