学号:031002345 姓名:戴泽华 学院:数计学院 专业:计算机
《数据库应用实践》实验二:数据库管理系统的维护与管理 实验目的:
掌握DBMS提供的数据完整性功能;理解数据库安全性,掌握DBMS的用户和权限管理;理解存储过程概念,掌握存储过程的使用方法;掌握触发器的使用;掌握备份,还原的基本技术。
实验环境:
操作系统: window 7 32位 数据库管理系统:sql server 2008
实验内容:
(1)数据库保护,备份还原,完整性,安全性
一、备份所创建的数据库。
backup database text1 to disk = 'f:\ext1.bak'
在所对应目录下生成一个备份文件。
还原数据库。
restore database text1 from disk = 'f:\ext1.bak' with replace
二、添加账号或用户。
exec sp_addlogin 'dzh1','dzh1','text1' exec sp_grantdbaccess 'dzh1'
如图在text1数据库中用户列表中生成dzh1的用户。
三、对用户授予权限;收回权限。
grant select on ct to dzh1
grant all privileges on student to dzh1;
对dzh1授权后用dzh1登入数据库
如图只能看到授权的两个表。
select *
from student
对表进行查询可以查出结果
由于我们只赋予了dzh1对ct表的select权限 当我们进行插入操作时
insert into ct values('1','数据库','戴某某') 如下图会出现拒绝
权限的收回 revoke all on student from dzh1 .
revoke select on ct
from dzh2
四、创建自定义约束(非空、唯一、默认值、check)
CREATE TABLE SC
( sno char(10) CONSTRAINT C1 NOT NULL, /*非空属性*/ cno char(4) NOT NULL, /*非空属性*/ grade smallint NOT NULL, /*非空属性*/ primary key (sno,cno),
foreign key (sno) references student (sno), foreign key (cno) references course (cno),
);
CREATE TABLE course
( cno char(4) CONSTRAINT C2 UNIQUE, /*要求cno列值唯一*/ cname char(40), credit smallint );
CREATE TABLE student (sno char(10) primary key, sname char(20) unique ,
ssex char(2) CONSTRAINT C3 CHECK(ssex IN ('男','女')), /*性别属性seex只允许取值为‘男’或者‘女’*/
sage smallint
);
(2)触发器,存储过程的使用
(1)触发器
首先建立一个学生成绩表 CREATE TABLE SC ( sno char(10), cno char(4), grade smallint,
primary key (sno,cno),
foreign key (sno) references student (sno), foreign key (cno) references course (cno) );
--sc表,存放选课信息,有sno(学号)、cno(课程号)、GRADE(成绩)
我们定义一个after触发器 当学生的成绩在50到60分时,自动将成绩修改为60分
Create trigger insert_sc1 on sc after insert AS IF ((select grade from inserted)<60)and ((select grade from inserted)>50) begin update sc set grade = 60 from sc s,inserted d where (s.sno=d.sno) and (s.cno=d.cno)
end
插入一行数据。
insert into sc values('0310003','5',52);
之后做查询语句 select * from sc
然后很神奇的发现0310003同学的科目5已经神奇的及格了。