数据库原理实验报告《视图基本操作数据完整性检验触发器基本操作》Word文件下载.docx
- 文档编号:18297504
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:26
- 大小:676.13KB
数据库原理实验报告《视图基本操作数据完整性检验触发器基本操作》Word文件下载.docx
《数据库原理实验报告《视图基本操作数据完整性检验触发器基本操作》Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告《视图基本操作数据完整性检验触发器基本操作》Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
7.掌握视图的定义,使用和删除等操作;
8.掌握视图中数据编辑和更新等操作;
9.了解视图更新和编辑中的注意事项;
10.会使用SSMS和TSQL进行视图相关的操作。
二、实验名称:
数据完整性检验
5.理解与掌握数据库完整性原因;
6.掌握数据库完整性的控制手段;
7.会用SQLServer2008进行数据库完整性相关的实践;
8.能够利用SSMS和TSQL自定义用户函数,实现完整性控制
三、实验名称:
触发器基本操作
要求:
4.理解触发器的作用
5.掌握触发器的定义、查看和修改操作;
6.理解不同顺序触发器的工作原理
7.能够利用SSMS和TSQL进行触发器相关操作
三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码)
▪掌握视图的作用:
1.视图能够简化用户的操作
2.视图使用户能以多种角度看待同一数据
3.视图对重构数据库提供了一定程度的逻辑独立性
4.视图能够对机密数据提供安全保护
5.适当的利用视图可以更清晰的表达查询
▪掌握视图的定义,使用和删除等操作;
2.1定义视图:
(1)知识点:
▪语句格式
CREATEVIEW
<
视图名>
[(<
列名>
[,<
]…)]
AS<
子查询>
[WITHCHECKOPTION];
▪组成视图的属性列名:
全部省略或全部指定
▪子查询不允许含有ORDERBY子句和DISTINCT短语
(2)建立信息系学生的视图。
CREATEVIEWIS_Student
AS
SELECTSno,Sname,Sage
FROMStudent
WHERESdept='
IS'
;
(3)建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。
WITHCHECKOPTION;
(4)基于多个基表的视图:
建立信息系选修了1号课程的学生视图
CREATEVIEWIS_S1(Sno,Sname,Grade)
AS
SELECTStudent.Sno,Sname,Grade
FROMStudent,SC
WHERESdept='
AND
Student.Sno=SC.SnoAND
SC.Cno='
1'
(5)基于视图的视图:
建立信息系选修了1号课程且成绩在90分以上的学生的视图。
CREATEVIEWIS_S2
AS
SELECTSno,Sname,Grade
FROMIS_S1
WHEREGrade>
=90;
(6)带表达式的视图:
定义一个反映学生出生年份的视图。
CREATEVIEWBT_S(Sno,Sname,Sbirth)
SELECTSno,Sname,2000-Sage
FROMStudent;
(7)分组视图:
将学生的学号及他的平均成绩定义为一个视图,假设SC表中“成绩”列Grade为数字型
CREATEVIEWS_G(Sno,Gavg)
SELECTSno,AVG(Grade)
FROMSC
GROUPBYSno;
(8)不指定属性列:
将Student表中所有女生记录定义为一个视图
CREATEVIEWF_Student(F_Sno,name,sex,age,dept)
SELECT*
FROMStudent
WHERESsex='
女'
2.2使用视图
(1)在信息系学生的视图中找出年龄小于20岁的学生。
SELECTSno,Sage
FROMIS_Student
WHERESage<
20;
(2)查询选修了1号课程的信息系学生
SELECTIS_Student.Sno,Sname
FROMIS_Student,SC
WHEREIS_Student.Sno=SC.SnoANDSC.Cno='
(3)在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩
SELECT*
FROMS_G
WHEREGavg>
2.3删除视图
语句的格式:
DROPVIEW<
;
▪该语句从数据字典中删除指定的视图定义
▪如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
▪删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除
(2)删除视图BT_S:
DROPVIEWBT_S;
DROPVIEWBT_S;
▪掌握视图中数据编辑和更新等操作;
(1)将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。
UPDATEIS_Student
SETSname='
刘成'
WHERESno='
201215125'
(2)向信息系学生视图IS_S中插入一个新的学生记录:
200215129,赵新,20岁
INSERT
INTOIS_Student
VALUES('
200215129'
'
赵新'
20);
(3)删除信息系学生视图IS_Student中学号为
DELETE
FROMIS_Student
▪了解视图更新和编辑中的注意事项;
(1)更新视图的限制:
一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新
例:
视图S_G为不可更新视图。
UPDATES_G
SETGavg=90
WHERESno=‘200215121’;
这个对视图的更新无法转换成对基本表SC的更新
(2)允许对行列子集视图进行更新
(3)对其他类型视图的更新不同系统有不同限制
▪会使用SSMS和TSQL进行视图相关的操作。
具体操作的步骤和注意事项在以上四个板块均有描述和体现,所以本块不再赘述;
▪理解与掌握数据库完整性原因;
(1)数据库的完整性:
数据的正确性和相容性
(2)数据的完整性和安全性是两个不同概念
1)数据的完整性:
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
防范对象:
不合语义的、不正确的数据
▪数据的安全性
保护数据库防止恶意的破坏和非法的存取
非法用户和非法操作
▪掌握数据库完整性的控制手段;
(1)为维护数据库的完整性,DBMS必须:
1.提供定义完整性约束条件的机制
2.提供完整性检查的方法
3.违约处理
(2)实体完整性定义:
1)关系模型的实体完整性
CREATETABLE中用PRIMARYKEY定义
2)单属性构成的码有两种说明方法
定义为列级约束条件
定义为表级约束条件
3)对多个属性构成的码只有一种说明方法
定义为表级约束条件
(3)实体完整性检查和违约处理:
▪插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。
包括:
检查主码值是否唯一,如果不唯一则拒绝插入或修改
检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
(4)参考完整性定义:
在CREATETABLE中用FOREIGNKEY短语定义哪些列为外码
用REFERENCES短语指明这些外码参照哪些表的主码
(5)参照完整性检查和违约处理
1)参照完整性违约处理
1.拒绝(NOACTION)执行:
默认策略
2.级联(CASCADE)操作
3.设置为空值(SET-NULL):
对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值
▪会用SQLServer2008进行数据库完整性相关的实践;
(1)将Student表中的Sno属性定义为码
1)在列级定义主码:
CREATETABLEStudent
(SnoCHAR(9)PRIMARYKEY,
SnameCHAR(20)NOTNULL,
SsexCHAR
(2),
SageSMALLINT,
SdeptCHAR(20));
2)在表级定义主码
(SnoCHAR(9),
SnameCHAR(20)NOTNULL,
SsexCHAR
(2),
SdeptCHAR(20),
PRIMARYKEY(Sno)
);
(2)将SC表中的Sno,Cno属性组定义为码
CREATETABLESC
(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,
GradeSMALLINT,
PRIMARYKEY(Sno,Cno)/*只能在表级定义主码*/
(3)定义SC中的参照完整性
CREATETABLESC
PRIMARYKEY(Sno,Cno),/*在表级定义实体完整性*/
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
/*在表级定义参照完整性*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
(4)显式说明参照完整性的违约处理示例
(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno)
ONDELETECASCADE/*级联删除SC表中相应的元组*/
ONUPDATECASCADE,/*级联更新SC表中相应的元组*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
ONDELETENOACTION
/*当删除course表中的元组造成了与SC表不一致时拒绝删除*/
ONUPDATECASCADE
/*当更新course表中的cno时,级联更新SC表中相应的元组*/
▪能够利用SSMS和TSQL自定义用户函数,实现完整性控制
4.1用户定义的完整性:
用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求
4.1.1属性上的约束条件的定义:
在CREATETABLE中定义属性时,可以根据应用的要求定义属性上的约束条件,即属性值限制,包括:
列值非空(NOTNULL)
列值唯一(UNIQUE)
检查列值是否满足一个条件表达式(CHECK)
▪不允许为空值:
在定义SC1表时,说明sno、cno、grade属性不允许取空值:
createtablesc1
(snochar(9)notnull,
cnochar(4)notnull,
gradesmallintnotnull,
creditsmallint,
primarykey(sno,cno),
▪列值唯一:
建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码。
CREATETABLEDEPT
(DeptnoNUMERIC
(2),
DnameCHAR(9)UNIQUE,/*要求Dname列值唯一*/
LocationCHAR(10),
PRIMARYKEY(Deptno)
(3)用CHECK短语指定列值应该满足的条件:
Student1表的Ssex只允许取“男”或“女”
SnameCHAR(8)NOTNULL,
SsexCHAR
(2)CHECK(SsexIN('
男'
)),
/*性别属性Ssex只允许取'
或'
*/
SdeptCHAR(20)
4.1.2元祖上的约束条件
在CREATETABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制
同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件
(1)当学生的性别是男时,其名字不能以Ms.打头。
CREATETABLEStudent1
SnameCHAR(8)NOTNULL,
PRIMARYKEY(Sno),
CHECK(Ssex='
ORSnameNOTLIKE'
Ms.%'
)
/*定义了元组中Sname和Ssex两个属性值之间的约束条件*/
1.理解触发器的作用
触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程
▪由服务器自动激活
▪可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力
2.掌握触发器的定义、查看和修改操作;
2.1定义触发器
(1)语法格式:
CREATETRIGGER语法格式
CREATETRIGGER<
触发器名>
{BEFORE|AFTER}<
触发事件>
ON<
表名>
FOREACH{ROW|STATEMENT}
[WHEN<
触发条件>
]
触发动作体>
(2)定义触发器的语法说明:
1.创建者:
表的拥有者
2.触发器名
3.表名:
触发器的目标表
4.触发事件:
INSERT、DELETE、UPDATE
5.触发器类型
行级触发器(FOREACHROW)
语句级触发器(FOREACHSTATEMENT)
▪例如,假设在[例11]的TEACHER表上创建了一个AFTERUPDATE触发器。
如果表TEACHER有1000行,执行如下语句:
UPDATETEACHERSETDeptno=5;
▪如果该触发器为语句级触发器,那么执行完该语句后,触发动作只发生一次
▪如果是行级触发器,触发动作将执行1000次
6.触发条件
▪触发条件为真
▪省略WHEN触发条件
7.触发动作体
▪触发动作体可以是一个匿名PL/SQL过程块
▪也可以是对已创建存储过程的调用
(3)当对表student中sage列,当录入的sage小于16时,自动改为16
createtriggerc
onstudent
forupdate
as
begin
updatestudent
setsage=16
wheresage<
15
end
1、after触发器(之后触发)
a、insert触发器
b、update触发器
c、delete触发器
2、insteadof触发器(之前触发)
其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。
而insteadof触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。
既可以在表上定义insteadof触发器,也可以在视图上定义。
4.能够利用SSMS和TSQL进行触发器相关操作
三、测试数据和执行结果(在给定数据下,执行操作、算法和程序的结果,可使用数据、图表、截图等给出)
1、掌握视图的作用:
2、掌握视图的定义,使用和删除等操作;
a)该语句从数据字典中删除指定的视图定义
b)如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
c)删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除
删除前:
删除后:
5.掌握视图中数据编辑和更新等操作;
更新前:
更新后:
插入前:
插入后:
(3)删除信息系学生视图IS_Student中学号为200215129的记录
6.理解与掌握数据库完整性原因;
7.掌握数据库完整性的控制手段;
以上两个要求在实验内容和设计板块体现;
8.会用SQLServer2008进行数据库完整性相关的实践;
9.将Student表中的Sno属性定义为码
10.在列级定义主码:
11.在表级定义为主码:
12.能够利用SSMS和TSQL自定义用户函数,实现完整性控制
(1)不允许为空值:
我们在输入sql语言时对sno、cno、grade做了完整性约束:
不允许取空值,而对credit未做要求,所以生成的sc1表中是否允许NULL,可以看到效果。
(2)列值唯一:
当我们不取这两个值时:
若试图以mrs.打头:
四、实验结果分析及总结(对实验的结果是否达到预期进行分析,总结实验的收获和存在的问题等)
一、在对视图基本操作学习实验过程中,1、我掌握了视图的作用:
能够简化用户的操作、使用户能以多种角度看待同一数据、对重构数据库提供了一定程度的逻辑独立性、能够对机密数据提供安全保护、适当的利用视图可以更清晰的表达查询2、我掌握视图的定义,使用和删除等操作:
比如在定义视图时,子查询不允许含有ORDERBY子句和DISTINCT短语;
在视图使用过程中更是体会了视图的作用;
如果视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除、删除基表时,由该基表导出的所有视图定义都必须显式地使用DROPVIEW语句删除;
3、我掌握视图中数据编辑和更新等操作,使得我对SQLServer这个软件更加熟悉4、视图更新和编辑中的注意事项:
1)更新视图的限制:
(2)允许对行列子集视图进行更新(3)对其他类型视图的更新不同系统有不同限制
二、在数据完整性检验中:
1、理解并掌握了数据库完整性原因:
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据;
不合语义的、不正确的数据;
2、实体完整性定义
1)关系模型的实体完整性:
2)单属性构成的码有两种说明方法:
一种定义为列级约束条件;
另一种定义为表级约束条件;
而对多个属性构成的码只有一种说明方法:
实体完整性检查和违约处理
1)插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。
检查主码值是否唯一,如果不唯一则拒绝插入或修改;
检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改(检查记录中主码值是否唯一的一种方法是进行全表扫描)
3、参照完整性定义
1)在CREATETABLE中用FOREIGNKEY短语定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 视图基本操作数据完整性检验触发器基本操作 数据库 原理 实验 报告 视图 基本 操作 数据 完整性 检验 触发器
![提示](https://static.bdocx.com/images/bang_tan.gif)