实验三 更新数据库、视图及数据库完整性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三更新数据库、视图及数据库完整性
一、实验目的
熟悉通过SQL语句更新数据库、创建视图以及操作视图的基本使用方法,熟悉DBMS系统关于数据库完整性的约束限制。
二、实验内容和要求
1、熟练update,delete,insert语句进行更新数据库操作
2、创建视图以及操作视图的基本使用方法,
3、通过实验,了解并掌握实体完整性、参照完整性的定义、违约处理。练习使用触发器确保数据完整性。
三、实验主要仪器设备和材料
1.计算机及操作系统:PC机,Windows 2000/xp;
2.数据库管理系统:SQL sever 2000/2005;
四、实验方法、步骤及结果测试
实验题目:
题目1、在表S中插入学生学号009,姓名:麦兜,性别男,1984年4月1日出生,网络工程专业,CS系,籍贯:北京。
题目2、把王涛同学的选课信息全部删掉。查询每个学生选课信息,包括学号,姓名,选课课号,成绩
实现代码及查询sc表的结果截图:
Delete from Sc where Sno in(
Select Sno from S where Sname=’王涛’)
Select Sc.Sno ,Sname,Cno,Grade from Sc,S where Sc.Sno=S.Sno
题目3、将选修数据库不及格的成绩全部置空。
Update Sc set Grade=null where Grade<60 and Cno in( Select Cno from C where Cname=‘数据库’)
实现代码及查询结果截图:
题目4、
①查找IS系选修数据库的学生学号,姓名,课程号,成绩。给出截图Select S.Sno,S.Sname,Cno,Grade from S,Sc where S.Sdept='IS'and Cno in( Select Cno from C where Cname='数据库')and S.Sno=Sc.Sno
②把IS系同学选修DB的成绩提高10分。
Update Sc set Grade=Grade+10 where Cno in(
Select Cno from C where Cname='数据库')and Sno in(
Select Sno from S where Sdept='IS')
③查看IS系选修数据库的学生学号,姓名,课程号,成绩。给出截图
Select S.Sno,S.Sname,o,Sc.Grade from S,Sc where S.Sno=Sc.Sno
and S.Sdept='IS'and
Cno in(
select Cno from C where Cname='数据库'
)
实现代码及查询结果截图:
题目5、
①增加麦兜的选课信息。选修’计算机应用’,成绩44分。选修’数据库’,成绩60分(可以分步求,也可以参照T-SQL中的变量的用法)
Declare @sno char(10)
Declare @cno char(10)
Set @sno=(select Sno from S where Sname='麦兜')
Set @cno=(select Cno from C where Cname='计算机应用');
Insert into Sc Values(@sno,@cno,44)
Declare @sno char(10)
Declare @cno char(10)
Set @sno=(select Sno from S where Sname='麦兜')
Set @cno=(select Cno from C where Cname='数据库');
Insert into Sc Values(@sno,@cno,60)
②查看麦兜的选修信息。显示字段包括学号,姓名,选修课名,成绩
实现代码及查询结果截图:
Select S.Sno,S.Sname,ame,Sc.Grade from S,Sc,C where S.Sno=Sc.Sno
and o=o and S.Sname='麦兜'
题目6、删除麦兜不及格的选课信息。
实现代码及查询结果截图:
Delete from Sc where Sc.Grade<60 and Sno in(select Sno from S where Sname='麦兜');
题目7、把CS系学生的学号、姓名、选课课号、课程名、成绩做成视图CS_SC,然后查询该视图所有信息
实现代码及查询结果截图:
Create View CS_SC(Sno,Sname,Cno,Cname,Grade)as select S.Sno,S.Sname,o,ame,Sc.Grade from S,C,Sc where
S.Sno=Sc.Sno and o=o and S.Sdept='CS'
Select*from CS_SC;
题目8、在CS系的视图中,将学号为009的学生的成绩增加5分
Update CS_SC set Grade=Grade+5 where Sno='009'
实现代码及查询结果截图:
题目9、在sc中插入一条信息,学号009,这个学生还没选课,没有成绩,查看DBMS 的提示信息。写出原因(违反了什么完整性规则,应该怎么解决)
实现代码及查询结果截图:
Insert into Sc(Sno) Values(009);
原因是在sc表中,sno与cno共同构成主键,主键是不能为空的,而在插入学号009时,因为该学号还没有选课没有成绩也没有对应的课程号,这与主键不为空相矛盾..违反了用户定义完整性
题目10、插入一门课的信息,课程号:08,课程名:java基础,课程学分:40,查看DBMS提示信息。写出原因
实现代码及查询结果截图:
insert into C(Cno,Cname,CCredit)values(
'08','java基础',40)
违反了属性上的约束条件。Ccredit的约束条件是(0,20)取值
题目11、插入学生信息。学号002,姓名张三,性别男。查看查看DBMS提示信息。写出原因
实现代码及查询结果截图:
insert into S(Sno,Sname,Ssex)values(
'002','张三','男')
表中已经存在002学号学生,不能重复插入相同的键
题目12、①将姓名刘%的学生信息删掉,查看dbms的提示。给出截图。思考该操作违反什么完整性操作?
delete from S where Sname='刘%'