实验三 更新数据库、视图及数据库完整性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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='刘%'

相关文档
最新文档