SCHEMA和USER在Oracle中是一样的吗?是否存在单个用户可以拥有两个或更多模式的情况?
答案 0 :(得分:4)
严格来说,SCHEMA是USER拥有的一组对象。但是,USER只能有一个SCHEMA,因此人们经常互换使用这些术语。
这是USER和SCHEMA之间的区别。用户“A”已将其PRODUCT表的权利授予用户“B”。用户“B”没有该名称的表格。
SQL> show user
USER is "B"
SQL> select count(*) from products
2 /
select count(*) from products
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select count(*) from a.product
2 /
COUNT(*)
----------
2
SQL>
如果没有同义词,“B”需要在架构前加上引用PRODUCT表。除非他们选择更改当前架构:
SQL> alter session set current_schema = "A"
2 /
Session altered.
SQL> select count(*) from product
2 /
COUNT(*)
----------
2
SQL> show user
USER is "B"
SQL>
现在用户是“B”但当前(默认)架构是“A”。在引用自己的表时,他们需要为模式添加前缀!
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
YOUR_TABLE
SQL> select count(*) from your_table;
select count(*) from your_table
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select count(*) from b.your_table;
COUNT(*)
----------
6
SQL>
“是否可以在没有任何用户的情况下单独创建架构。”
没有。 SCHEMA必须属于USER。当我们create user
Oracle自动创建一个空模式时。
令人困惑的是有create schema
语法,但这只是在一个语句中创建多个表(和索引)的简短方法。 Find out more。