您的位置:首页 > 数据库 > Oracle

Oracle视图和用户管理

2015-11-24 15:08 489 查看
1、在scott用户下,创建一个视图sales_view,这个视图能够查询出job为’SALESMAN’的所有员工信息。

create or replace view sales_view as
(select * from emp where job='SALESMAN')


2、查询数据字典表user_views,看看视图sales_view的信息。

select view_name,text from user_views;


3、对视图sales_view进行更新,让视图中所有的员工工资增加100元。这个更新是对哪里的数据进行了更新?

update sales_view set sal = sal+ 100;


4、第3题能对视图更新是危险的,你修改视图sales_info,让它成为只读的。

create or replace view sales_info as
(select * from emp where job='SALESMAN')
with read only


5、create view还有一个可选项:with check option。这个子句的定义是:所有通过该视图进行的数据修改操作都不能违反在创建视图时用where子句所限定的条件。想一想:创建一个视图,怎么能够保证插入的新记录,工资都必须在800元以上?用视图来解决这个问题

create or replace view sales_info as
(select * from emp where job='SALESMAN' and sal > 800)
With check option


6、创建一个新用户dog,密码为wangwang。

create user dog identified by wangwang;


7、给dog授予连接数据库、创建表的权限。

第7题授权之后,如果创建表不能成功,请在system用户下输入这条语句:

alter user dog default tablespace users quota 20m on users。
grant create session,create any table to dog;


8、你在dog用户下,查询scott用户下的emp表(scott.emp),会发现查询不到,现在有一个权限是select any table。你实验一下,能不能解决这个问题,让我们能在dog用户下可以查询到scott.emp中的数据。

grant select any table to dog;


9、创建两个新用户,cat和pig,创建一个角色animal,给角色授予“连接数据库”、“创建表”、“创建视图”、“查询所有表”四个权限,然后把角色赋予cat和pig。体会一下,有角色是不是方便多了?

grant create session,create any table,create any view,select any table to animal; 创建角色
create user cat identified by cat;  创建猫
create user pig identified by pig;  创建猪
grant animal to cat,pig;  授权


10、假设现在想把cat和pig的这四个都回收。想一想,现在学习了角色,有没有快速的方法回收?

revoke animal from cat,pig;


11、权限的回收、用户密码的修改、删除用户,大家自己实验。

上面的授权实验是系统权限。下面介绍一下对象权限。

比如scott用户有emp表,emp表就是scott用户下的一个对象,那么scott用户自动拥有该对象的所有权限。对象的拥有者可以把一些对象的权限授予其他用户。

将对象的权限授予其他用户的grant语句的格式如下:

grant 对象的权限
on 对象名
to 用户名|角色名|public
with  grant option(可选项)


在这里,with grant option,是什么意思呢?

12、scott用户下,给dog用户授予查询emp表的权限。(不要加with grant option)

grant select on emp to cat;


13、scott用户下,给dog用户授予查询dept表的权限(加上with grant option)

grant select on dept to dog with grant option;
(同时将该表的查询权限的授权赋予dog用户,dog用户可以将该权限赋予其他用户)




14、做完第12和第13题,你登陆dog用户,把刚才获得的emp表和dept表的查询权限授予给用户cat试一试。就会明白with grant option在这里是什么作用。

查询授予的角色权限

select * from role_sys_privs;




实验注意

1、关于视图操作的优点

视图是由一个或者多个表组成的虚拟表。

1、安全,视图可以隐藏一些数据

2、使复杂的查询易于理解和使用

3、 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

2、关于用户权限的授权、回收与查看



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle