Oracle视图和用户管理
2015-11-24 15:08
489 查看
1、在scott用户下,创建一个视图sales_view,这个视图能够查询出job为’SALESMAN’的所有员工信息。
2、查询数据字典表user_views,看看视图sales_view的信息。
3、对视图sales_view进行更新,让视图中所有的员工工资增加100元。这个更新是对哪里的数据进行了更新?
4、第3题能对视图更新是危险的,你修改视图sales_info,让它成为只读的。
5、create view还有一个可选项:with check option。这个子句的定义是:所有通过该视图进行的数据修改操作都不能违反在创建视图时用where子句所限定的条件。想一想:创建一个视图,怎么能够保证插入的新记录,工资都必须在800元以上?用视图来解决这个问题
6、创建一个新用户dog,密码为wangwang。
7、给dog授予连接数据库、创建表的权限。
第7题授权之后,如果创建表不能成功,请在system用户下输入这条语句:
8、你在dog用户下,查询scott用户下的emp表(scott.emp),会发现查询不到,现在有一个权限是select any table。你实验一下,能不能解决这个问题,让我们能在dog用户下可以查询到scott.emp中的数据。
9、创建两个新用户,cat和pig,创建一个角色animal,给角色授予“连接数据库”、“创建表”、“创建视图”、“查询所有表”四个权限,然后把角色赋予cat和pig。体会一下,有角色是不是方便多了?
10、假设现在想把cat和pig的这四个都回收。想一想,现在学习了角色,有没有快速的方法回收?
11、权限的回收、用户密码的修改、删除用户,大家自己实验。
上面的授权实验是系统权限。下面介绍一下对象权限。
比如scott用户有emp表,emp表就是scott用户下的一个对象,那么scott用户自动拥有该对象的所有权限。对象的拥有者可以把一些对象的权限授予其他用户。
将对象的权限授予其他用户的grant语句的格式如下:
在这里,with grant option,是什么意思呢?
12、scott用户下,给dog用户授予查询emp表的权限。(不要加with grant option)
13、scott用户下,给dog用户授予查询dept表的权限(加上with grant option)
14、做完第12和第13题,你登陆dog用户,把刚才获得的emp表和dept表的查询权限授予给用户cat试一试。就会明白with grant option在这里是什么作用。
查询授予的角色权限
1、安全,视图可以隐藏一些数据
2、使复杂的查询易于理解和使用
3、 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。
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、关于用户权限的授权、回收与查看
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解