视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
国开电大《数据库运维实验》实验3 数据库安全性与完整性控制实验
2025-09-30 22:43:08 责编:小OO
文档
实验内容及结果:

授权

创建用户”S学号u1”,S学号u2,S学号u3,S学号U4,并为其赋予connect角色。

其中,学号是指你的学号,比如你的学号为20130001,则你创建的用户应该是S20130001u1,S20130001u2,S20130001u3,S20130001u4

create user  s2016214220u1 identified by nefu1234;

create user  s2016214220u2 identified by nefu1234;

create user  s2016214220u3 identified by nefu1234;

create user  s2016214220u4 identified by nefu1234;

假设你的用户名是S2*******(做实验时请根据你的账号修改),把你在数据库中创建的Student表的查询权限授给用户”S学号u1”, ”S学号u1”执行相应的查询。

grant select

on s2016214220.student

to s2016214220u1

(1)查询S2*******用户的Student表中全体学生的详细记录

select * from student

 

 

 

(2)查询S2*******用户Student表中所有姓刘的学生的姓名、学号和性别。

select sno,sname,ssex from s2016214220.student where sname like '刘%';

(3)查询S2*******用户Student表中名字中第二字为“阳”字的学生的姓名和学号。

select sname,sno from s2016214220. student

where sname like '_阳%';

把S2*******用户的Student表和Course表的全部权限授予用户”S学号u2”, ”S学号u3”;然后让”S学号u2”用户修改S2*******的数据。

GRANT all  privileges

     ON s2016214220.student

   TO s2016214220u2,s2016214220u3;

 GRANT all  privileges

 ON s2016214220.course

 TO s2016214220u2,s2016214220u3;

 

修改:

DELETE FROM s2016214220.student WHERE s2016214220.student.sname = '李阳'

 

把S2*******用户的表Student的修改学生学号的权限赋予用户” S学号U4”,然后让S2*******用户修改S2*******的student表的SNO数据。

grant alter

on student to s2016214220u4;

grant delete

on student to s2016214220u4;

grant update

on student to s2016214220u4;

grant insert

on student to s2016214220u4;

把S2*******用户的SC表的插入权限授予“S学号U5”用户,然后让“S学号U5”用户向SC表插入一条记录。

create user s2016214220u5 IDENTIFIED BY nefu1234;

grant insert

on s2016214220.sc to s2016214220u5;

insert into sc values(200215126,7,85);

把对表SC的查询权限授予所有用户。

(1)让“S学号u2”用户查询S2*******用户的SC表中选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列

      grant select

on s2016214220.sc

to public

select sno,grade

from s2016214220sc

where cno='3'

order by grade desc

(2)让“S学号u2”用户查询S2*******用户的SC表中各个课程号与相应的人数。

       select cno,count(*)

from s2016214220.sc

group by cno;

 

(首先应该以新创建的用户的身份重新登陆数据库,然后再进行授权)

回收权限

1.收回用户”S学号u2”修改学生学号的权限

revoke alter

on student

from s2016214220u2

 

收回所有用户对表sc的查询权限

 revoke select

on sc

from public

 

3.收回用户”S学号U5”sc表的insert权限

  revoke insert

on sc

from s2016214220u5

 

4.在回收权限之后验证用户是否真正丧失了该权限(查询表,插入记录)

select * from sc

 

角色

创建一个角色

 create role we

给角色授予权限

      grant select on sc  to wt

 

将角色授予某一用户

  grant we to public

检查用户是否具有相应的权限

 select * from sc

 

完整性

1建立教师表Teacher,要求教师名称Tname列取值唯一,教师编号TNO列为主码。

 CREATE TABLE teacher

         (tno   varchar2(10)  primary key ,

            tname  varchar2(10)  unique

          );

2建立学生登记表Student,要求学号在9000至9999之间,年龄<29,性别只能是’男’或’女’,姓名非空。

 

3修改表Student的结构,由年龄小于29改为小于40。

alter table stu modify sage check(sage<49);

 

建立课程表COURSE,要求课程表中的每门课程的学分不得超过7分,且主讲教师字段TNO参照Teacher表TNO字段,且当删除教师表中一行记录时,如果它被参照,则将Course表中相应记录中TNO的值设置为空。

create table course1(

cno varchar2(4) constraint pk_c primary key,

cname varchar2(10),

tno varchar2(10) constraint fk_c_t references teacher(tno) On Delete Set NULL,

credit number(3) check (credit<=7)

);

建立表SC,要求SNO参照STUDENT表的学号,且当删除Student表中的一个学生记录时,级联删除学生的选课记录。

create table sc1(

cno varchar2(4) REFERENCES course1(cno) On Delete Cascade,

sno char(10)REFERENCES stu(sno) On Delete Cascade,

grade number(3),

primary key(cno,sno)

);

对上述新建立和修改定义的表,每个表输入3条数据,其中1条数据符合完整性约束,2条违反约束条件的,验证和体会Oracle的实体完整性和参照完整性。

 下载本文

显示全文
专题