解释
- 每个 user 都有一个独立的 schema,且 scheme 和 user 同名
- user 所拥有的是系统的资源和权限,而 schema 仅仅指系统的资源(table、index、pkg 等等)
网络例子:
" 好比一个房子,里面放满了家具,对这些家具具有支配权的是房子的主人(user),而不是房子(schema)。
你可以是一个房子的主人(user),拥有自己的房子(schema),也可以通过 alter session
的方式进入别人的房子。如果你没有特别指定的话,你所做的操作都是正对你当前所在房子中的东西。至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,或者你是整个大厦(database)的老大(DBA)"
-- 效果等同于 同义词 synonym
alter session set current_schema = 其它 schema 名字; -- 不需要引号,如 '其它 schema 名字'
实例说明
- system 登录,创建用户并授权(因为 system 是 DBA用户,所以可以看到所有表)
create user test_user identified by 12345;
grant create session to test_user;
- test_user 用户去查询 scott 用户下的表 emp
- 可以进入别人房间的前提:别人授权给你
小提示:授权完成后,下列几句话效果等同
desc scott.emp; -- 效果等同于下面两句话(参考: '同义词' )
alter session set current_schema = scott;
desc emp;