《实验七.sql语言之dcl》由会员分享,可在线阅读,更多相关《实验七.sql语言之dcl(9页珍藏版)》请在金锄头文库上搜索。
1、实验七实验七 SQL 语言的语言的 DCL一、实验目的一、实验目的SQL 的数据控制通过 DCL(数据控制语言) 实现。DCL 通过对数据库用户的授权和收权命令来实现有关数据的存取控制,以保证数据库的安全性。本次实验了解 DCL 语言的 GRANT 和 REVOKE 语句对数据库存取权限的控制,学会在 Oracle SQL Developer 中用 DCL 语言对数据库存取权限进行设定。二、实验步骤及结果二、实验步骤及结果1.运行 SQL Developer,使用系统管理用户 system(密码也是 system)建立连接,然后登录 Oracle 数据库。此用户为权限较高之用户,在后续的实验内
2、容中,对学生用户进行权限的授予和回收,使学生用户能完成设定的操作或者看到预计的系统错误信息。运行如下 SQL 语句在 HR 用户的模式下建立一个表。create table hr.dcltest(id varchar2(10),name varchar2(20),age number);如图 7-1 所示:图 7-12. 运行另外一个 SQL Developer 副本,使用学生用户建立连接,然后登录Oracle 数据库。用户名为 B+学号(如学号为 05100709,则用户名为 B05100709)和密码为 111, 运行如下查询语句,检索刚才建立的表:select * from hr.dcl
3、test92150033;如图 7-2 所示:图 7-23.返回 system 用户所在 SQL Developer,将 SELECT 权限授予学生用户。使得学生用户在表 HR.dcltest92150033 上有查询的权限,如图 73 所示:图 7-34.返回学生用户所在 SQL Developer,运再次执行前面查询语句,检索刚才建立的表,如图 7-4 所示:select * from hr.dcltest92150033;图 7-4到这里,我们发现,当我们将相应数据库对象的 SELECT 权限赋给用户后,用户就能执行相应的查询操作。5.接下来我们看看 INSERT 权限的例子。首先使用学
4、生用户在 SQL Developer 中对表 HR.dcltest92150033 进行插入元组的操作,insert into hr.dcltest92150033 values (B92150033,吴思远,35);系统给出了如下错误:Error starting at line 1 in command:insert into hr.dcltest92150033 values (B92150033,吴思远,35)Error at Command Line:1 Column:15Error report:SQL Error: ORA-01031: 权限不足01031. 00000 - “i
5、nsufficient privileges“如图 75 所示:图 756. 返回 system 用户所在 SQL Developer,将 INSERT 权限授予学生用户。使得学生用户在表 HR.dcltest92150033 上能完成插入元组的操作,如图 76 所示:图 767.返回学生用户所在 SQL Developer,再次执行前面的进行插入元组的操作。insert into hr.dcltest92150033 values (B92150033,吴思远,35);结果如图 7-7 所示:图 7-78.接下来看权限回收 REVOKE。 返回 system 用户所在 SQL Develop
6、er,将学生用户的 SELECT 权限回收。 如图 7-8 所示:如图 7-8 所示:9.返回学生用户所在 SQL Developer,再次执行前面查询语句,检索前面可以正常查询的表,结果如图 7-10 所示:select * from hr.dcltest92150033;图 7-1010.返回 system 用户所在 SQL Developer,将学生用户的所有权限回收。 执行如下 SQL 语句: revoke all on hr.dcltest92150033 from b92150033; 如图 7-11 所示:图 7-1111. 返回学生用户所在 SQL Developer,再次执行
7、前面查询语句,检索前面报权限不足的表,结果如图 7-12 所示:图 7-1212.UPDATE 和 DELETE 的权限授予与回收操作中涉及到的 SQL 语句保留如下, 备查。 create table hr.dcltest_08450214(id varchar2(10),name varchar2(20),age number);(id varchar2(10),name varchar2(20),age number);Grant insert on hr.dcltest_08450214 to hr;insert into hr.dcltest_08450214 values (B92
8、150033,吴思远,35);在没有权限下进行操作 Update hr.dcltest_08450214 set id=08450214 where id=B92150033; 在有权限下进行操作 Grant update on hr.dcltest_08450214to hr; Update hr.dcltest_08450214 set id=08450214 where id=B92150033; 收回权限后在进行操作 Revoke update on hr.dcltest_08450214 from hr; Update hr.dcltest_08450214set id=084502
9、14 where id=B92150033;在没有权限下进行操作 Delete name from hr.dcltest_08450214; 在有权限下进行操作 Grant delete on hr.dcltest_08450214 to hr; Delete name from hr.dcltest_08450214; 收回权限后在进行操作 Revoke delete on hr.dcltest_08450214 from hr; Delete name from hr.dcltest_08450214;三、心得体会:三、心得体会:通过这次实验,我知道了 SQL 的数据控制通过DCL(数据控制语言) 实现。DCL 通过对数据库用户的授权和收权命令来实现有 关数据的存取控制,以保证数据库的安全性。我以后需要多多上机练习,才能 把理论和实践相联系起来!