SCHEMA和USER在Oracle中是一样的吗?

时间:2017-04-28 07:18:30

标签: sql oracle

SCHEMA和USER在Oracle中是一样的吗?是否存在单个用户可以拥有两个或更多模式的情况?

1 个答案:

答案 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