5、关于表操作的口令
这里基本的pl/sql语局不进行介绍
5.1 desc 表 作用:查看当前表的结构(注:当前用户必须有管理该表的权限)
6、关于权限的口令
6.1 grant (select、delete、update、insert、all----->统称为对象权限(用户对其他用户的表、视图、存储过程、序列、同义词等的访问权限)) on 表 to 被授予用户
作用:当前连接用户给被授予用户赋自己管理的数据库表、视图、存储过程、同义词等数据库对象的权限,那么被授予的对象
首先同xiaochao登录,执行select * from emp;因为xiaocha用户并没有创建emp表,所以查不到结果集
现在登录scott用户(scott用户(专业术语.叫方案)是oracle创建数据库时默认创建的,他维护四张表,emp就是其中一张)。so,现在我们将scott的emp表的查询权限赋给xiaochao用户,使他拥有查询scott的emp表的功能,代码如下:
授权成功
ok,使用xiaochao用户成功的查到了scott用户的emp表,但是注意:表前需要加方案(用户)名
这里只演示了用户之间表的select的权限相互分配,其他操作也是一样,这里就不做演示了,注:all就是增删查该所有的权限;
6.2 revoke (insert、delete、select、update) on 表 from 用户
作用:当前连接用户回收之前分配给其他用户的自己数据库对象的访问权限
使用scott登录收回6.1赋予给xiaochao的select emp表的权限
在使用xiaochao登录,执行select * from scott.emp;发现之前的权限确实被收回了
6.3 with grant option 作用:数据库对象权限的传递
当A用户把它的数据库对象的访问权限(Insert、Delete、Select、Update、All这五种对象权限)赋予B用户时,如果想要B用户想能分配A用户的数据库对象访问权限给C用户,此时就用with grant option,且当A用户回收了B用户的权限之后,不会影响B用户分配给C用户的关于A用户的数据库对象的访问权限,如果要回收B用户分配给C用户的权限,只能显示的通过
revoke 权限 on A用户的表 from C用户,这样的方式来回收B分配给C的权限,实例代码如下:
注:scott扮演A用户的角色,xiaochao扮演B用户的额角色,xiaohong扮演C用户的角色
首先将emp表的select权限赋给xiaochao,然后通过with grant option将(scott分配emp表的select的能力)也赋给了xiaochao,那么此时xichao就可以分配scott的emp表的select权限给其他用户了!!!
通过xiaochao用户将scott的emp的select权限赋给xiaohong
通过xiaochao用户分配的权限,xiaohong也可以查到scott的emp表,但是注意红框,不能写xiaochao.emp,只能是scott.emp,我猜emp表传递的是指针,并不是数据的副本,所以xiaochao用户下,并没有这张表的数据。
6.4 with admin option 作用:oracle系统权限的传递
使用方式和with grant option一致,只是width admin option传递的是oracle系统的权限