数据库实验四五 - 图文

更新时间:2024-02-02 01:14:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、实验目的:

了解存储过程和事务的作用,基本掌握存储过程和事务的创建和使用方法 了解触发器的知识与作用,基本掌握触发器的创建方法 二、实验内容: 1、存储过程

(1)创建一个名为“proc-{学号}-1”的存储过程,用于查看学生表的所有信息。然后调用该存储过程。

create procedure proc_12267027_1 as begin select *

from student_12267027 end; exec proc_12267027_1

(2)创建一个名为“proc-{学号}-2”的存储过程,用于向学生表的所有字段添加一条记录,记录内容由调用时确定,然后调用该存储过程。

create procedure proc_12267027_2 (@Sno int,@Sname char(10), @Ssex char(8),@Sage int, @Sdept char(2)) as begin insert into student_12267027 values(@Sno,@Sname,@Ssex,@Sage,@Sdept)end; exec proc_12267027_2 @sno='200215127',@sname='李乐', @ssex='男',@sage='20',@sdept='CS'; (3)创建一个名为“proc-{学号}-3”的存储过程,用于删除学生表中指定学号的记录,具体学号由调用时决定,然后调用该存储过程。

create procedure proc_12267027_3(@sno char(10)) as begin

delete from student_12267027 where Sno=@sno end;

exec proc_12267027_3 '200215127'; (4)修改存储过程“proc-{学号}-4”,用于查询不小于指定成绩的学生的基本信息,具体成绩由调用时决定。 create procedure

proc_12267027_4(@grade int) as select *

from student_12267027,score_12267027 Wherestudent_12267027.Sno=score_12267

027.Sno and Grade>=@grade; exec proc_12267027_4 '85'; 2、触发器

(1)创建一个名为“trig-{学号}-1”的触发器,当向学生表添加记录时,该触发器自动显示学生表的所有信息。

create trigger trig_12267027_1 on student_12267027 for each row

as begin select * from student_12267027 end; insert into student_12267027 values('200215129','林立','男',19,'IS')

(2)创建一个名为“trig-{学号}-2”的触发器,当试图向学生表添加、修改或删除记录时,该触发器自动显示如下信息:“对不起,你无权进行更新操作!”。

create trigger trig_12267027_2 on student_12267027

instead of insert,update,delete as print'对不起,你无权执行该操作!' delete from student_12267027 where Sname='李勇'

(3)创建一个名为“trig-{学号}-3”的触发器,当向学生表删除记录时,该触发器自动删除成绩表中与之相关的所有记录。 create trigger trig_12267027_3 on student_12267027 for delete as delete from score_12267027

where Sno in (select Sno from deleted) delete from student_12267027 where Sname='五一'

(4)创建一个名为“trig-{学号}-4”的触发

器,当向成绩表添加记录时,该触发器自动显示与该记录相关的学生的学号、姓名和班级。

create trigger trig_12267027_4 on score_12267027 for insert as select Sno,Sname,Sdept from student_12267027

where Sno =(select Sno from inserted) insert

into score_12267027(Sno,Cno,Grade) values('200215125','C3','80')

4.数据库对象操作权限的授予和回收:为数据库用户zhang授予学生表的增、删、改、查权限。

一、实验目的

掌握SQL Server2000三级安全体系及验证模式的设置

掌握SQL Server2000服务器登录帐号及数据库用户帐号的管理

掌握创建用户自定义数据库角色并为其授权

掌握为数据库用户授权的方法 二、实验内容

1、下列操作通过企业管理器实现 1.创建SQL Server服务器登录账号

2、下列操作通过查询分析器实现(也就是通过命令实现) 用户权限操作

1.创建用户 User_{学号}_1 2.创建用户 User_{学号}_2 exec sp_addlogin

'User_12267027_1','pass','xsxk_12267 27' go use xsxk_12267027 exec sp_grantdbaccess'User_12267027_1' exec sp_addlogin

'User_12267027_2','pass','xsxk_12267027' go use xsxk_12267027 exec sp_grantdbaccess'User_12267027_2'

2.创建数据库用户:为“学生选课”表添加

用户:zhang。

3.把student_{学号}表的select权限授给用户User_{学号}_1

grant select on student_12267027 to User_12267027_1

3.创建数据库角色:为“学生选课”数据库创建一用户自定义数据库角色s_c_reader,该角色的权限是可以查询学生表及选课成绩表的信息。

4.把score_{学号}表的insert权限授给用户User_{学号}_2

grant insert on score_12267027 to User_12267027_2

9.再插入一条选课记录(‘200215124’,’C3’,78),此时没有insert权限,不能插入记录

insert into score_12267027 values('200215124','C3','78')

5.使用User_{学号}_2帐号登录 退出->重登

6.利用select * from score_{学号}进行查询,应该出现“没有权限”的提示,这是因为没有授权User_{学号}的select权限的原因

select * from score_12267027

角色权限操作

1.首先创建一个角色 Role_{学号} exec sp_addrole Role_12267027

2.将student_{学号}的select, update, insert权限授给角色Role_{学号} grant select,update,insert

on student_12267027 to Role_12267027

7.插入一条选课记录(‘200215124’,’C2’,89),因为有insert权限,因此可以插入

insert into score_12267027 values('200215124','C2','89')

3.创建用户 User_{学号}_3 4.创建用户 User_{学号}_4 exec sp_addlogin

'User_12267027_3','pass','xsxk_12267027' go use xsxk_12267027 exec sp_grantdbaccess'User_12267027_3' exec sp_addlogin

'User_12267027_4','pass','xsxk_12267027' go use xsxk_12267027 exec sp_grantdbaccess'User_12267027_4'

8.把User_{学号}表的insert权限收回

revoke insert on score_12267027 from User_12267027_2 cascade

5.将角色Role_{学号}授予用户User_{学号}_3

6.将角色Role_{学号}授予用户User_{学

号}_4

exec sp_addrolemember

'Role_12267027','User_12267027_3' exec sp_addrolemember

'Role_12267027','User_12267027_4'

7.使用User_{学号}_3登录,利用select * from score_{学号}进行查询,得到查询结果

select * from student_12267027

8.收回角色 Role_{学号}的select权限 revoke select on student_12267027 from Role_12267027

9.使用User_{学号}_3登录,利用select * from score_{学号}进行查询,应该出现“没有权限”的提示

select * from student_12267027

本文来源:https://www.bwwdw.com/article/dbfw.html

Top