实验四数据库更新视图和数据控制.doc
文本预览下载声明
嘉应学院计算机学院
一、实验目的
通过实验掌握数据库更新的方法和完整性约束的概念以及视图建立和操作方法。掌握SQL SERVER的数据控制和安全性设计的基本方法, 存储过程的建立和使用方法。 1、插入数据
INSERT
INTO表名〉[属性列1〉[,属性列2〉...)]
VALUES(常量1[,常量2]...)
2、修改数据
UPDATE 表名
SET列名〉=表达式〉[,列名〉=表达式〉]...
[WHERE条件〉]
3. 删除数据
DELETE
FROM表名
[WHERE条件
4. 建立视图
CREATE VIEW 视图名〉[(列名〉[,(列名〉]...
AS 子查询〉
[WITH CHECK OPTION]
5. 授权
GRANT权限[,权限]...
ON对象类型〉对象名]
TO用户 [,用户]...
[WITH GRANT OPTION]
四、实验步骤及内容
(一)数据库更新
1. 在school数据库中,确保表之间已经建立关系,用企业管理器建立数据库的Diagrams
2. 在course 表中删除cno=1的记录,有什么结果?
执行删除操作后,结果如下:
3. 在Diagrams中编辑course表和 sc表之间的关系,选择cascade delete related records
在SC表中的属性 关系里选择级联删除相关记录,如图:
再查看三表之间的关系:
重复2的操作,观察course 表和 sc表的变化,有什么结果,为什么?
可观察到:Course表与sc表中的cno=‘1’的记录都删除了。
因为选择在sc表属性中设置了级联删除这个选项。并且删除了 course表和sc表之间的联系
4. 将course表和sc表的课程号为2的都改为22,如何做?(提示:在Diagrams中编辑course表和 sc表之间的关系,选择cascade update related fields)观察并记录结果。
执行update语句,并查看:
5. 在SC表中,
(1)将95002同学的成绩都减少10%
执行update操作后,如图:
(2) 课程号为3的改为33都有什么结果?为什么?
UPDATE 语句与FOREIGN KEY 约束fk_cno冲突。该冲突发生于数据库school,表dbo.Course, column Cno。语句已终止。(1) 在STUDENT表中插入一条新纪录:
95006 李三 男 2IS
执行insert操作:
查看student表是否正确插入了相应的数据:
(2)在SC表中插入一条新纪录:
95008 3 80
都有什么结果?为什么?如何完成上述操作?
分析原因:
原因在于修改sc表中的一个元组,修改后该元组的cno属性的值在course表中找不到一个元组,其cno属性的值与之相等,故拒绝执行此操作。
修改
要完成上面的操作,先修改student表与sc表之间的关系:
然后再执行插入,并查看sc表是否正确插入相应的信息:
分析:在Diagrams中编辑student表和 sc表之间的关系,强制外键约束选择否
(二)建立新用户和数据控制管理
1. 企业管理器--security--logins
建立两个新用户:用户名stu1,密码stu1和用户名stu2,密码stu2
default database 为school database access选择school
2.企业管理器--database--school--property观察结果 3. SQL Query Analyzer--用超级用户登录
建立存储过程sp1
建立存储过程sp
4. 企业管理器--database--school--stored procedure观察结果
SQL Query Analyzer--用超级用户登录,执行存储过程sp1, sp2
exec sp1
exec sp2
查看sp1 sp2存储过程:
企业管理器--database--school--property--permission观察结果
企业管理器--database--school--student,course 和SC --property--permission观察结果
5.
检验一:
在命令行用stu1用户登录
(2)在SQL Query Analyzer--file--connect以s
显示全部