当前位置:文档之家› 数据库系统原理-实验04-数据更新和视图

数据库系统原理-实验04-数据更新和视图

2011-2012学年第二学期课程实验报告课程名称:数据库系统原理实验名称:数据更新和视图姓名班级学号实验台编号同组同学实验课表现出勤、表现得分25% 25 实验报告得分50% 实验总分操作结果得分25% 25实验目的1.学会熟练使用INSERT语句对数据表进行数据插入操作。

2.学会使用UPDATE语句对数据表中的数据进行修改操作。

3.学会使用DELETE语句对数据表中的数据进行删除操作。

4.了解使用视图的目的与好处,掌握视图与基本表的关系。

5.掌握如何使用SQL语句创建、修改、删除和查询视图。

实验内容(实验步骤和实验结果的简单描述,方便同学自己以后阅读)一、数据的插入、删除和修改1.创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用SELECT子句向表XS1中插入多行数据(专业为“电子”的学生数据)。

2.修改XS1表的结构,增加1个“平均成绩”字段,并根据XS_KC表修改每个学生的“平均成绩”。

3.将XS表中计算机专业的学生的总学分增加10分。

4.将XS表中学号为“4102101”的同学的总学分增加4分,备注改为“提前修完一门课程”。

5.将XS_KC表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。

6.修改XS1表的结构,增加1个“总学分”字段,并使其值为该学生所学各门功课的学分之和。

7.将XS1表中总学分小于10分的学生数据删除。

8.将XS_KC表中“数据库”课程的所有成绩信息删除。

9.将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息删除。

10.删除XS1表中前两个同学的基本信息。

11.删除XS1表中的所有数据。

12.删除XS1表。

二、视图操作1.使用SQL语句创建视图V_SCORE1,使其显示计算机专业学生的所有基本信息,并保证以后对该视图的修改都要满足专业为“计算机”这个条件。

2.使用SQL语句创建视图V_SCORE2,显示计算机专业每个学生的学号、姓名、选修的课程名称及其成绩。

3.使用T-SQL语句修改视图V_SCORE2,使其显示每个专业、每门课程的平均成绩,结果格式为:专业课程名平均成绩………………4.通过V_SCORE2查看计算机专业每门课程的平均成绩。

5.通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:专业平均成绩…………6.使用视图V_SCORE1向其基表XS表中输入数据(数据自定),并观察什么样的数据可以插入,什么样的数据不可以插入,并解释为什么。

7.使用SQL语句删除视图V_SCORE1、V_SCORE2。

select*from xsselect*from kcselect*from xs_kcselect*from xs1--1.创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用SELECT子句向表XS1中插入多行数据(专业为“电子”的学生数据)。

create table xs1(学号char(7)not null primary key,姓名char(8)not null,性别bit default(1)not null,出生日期datetime)insert into xs1select学号,姓名,性别,出生日期from xswhere专业='电子'select*from xs1--2.修改XS1表的结构,增加个“平均成绩”字段,并根据XS_KC表修改每个学生的“平均成绩”。

alter table xs1add平均成绩char(100)update xs1set平均成绩=(select avg(成绩)from xs_kc where xs_kc.学号=xs1.学号group by学号)select*from xs1--3.将XS表中计算机专业的学生的总学分增加分。

update xs set总学分=总学分+10where专业='计算机'select*from xs--4.将XS表中学号为“”的同学的总学分增加分,备注改为“提前修完一门课程”。

update xs set总学分=总学分+4,备注='提前修完一门课程'where学号='4102101'select*from xs--5.将XS_KC表中学号为“”的同学的“计算机基础”课程的成绩增加分。

update xs_kc set成绩=成绩+10where学号='4102101'and课程号=(select课程号from kc where kc.课程名='计算机基础')--6.修改XS1表的结构,增加个“总学分”字段,并使其值为该学生所学各门功课的学分之和。

alter table xs1add总学分char(100)update xs1set总学分=(select sum(学分)from kc,xs_kc where xs_kc.学号=xs1.学号and kc.课程号=xs_kc.课程号group by学号)select*from xs1--7.将XS1表中总学分小于分的学生数据删除。

delete from xs1where总学分<10select*from xs1--8.将XS_KC表中“数据库”课程的所有成绩信息删除。

delete from xs_kcwhere课程号=(select课程号from kc where kc.课程名='数据库')select*from xs_kc--9.将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息删除。

delete from xs_kcwhere not exists(select xs.学号from xs_kc,xs where xs_kc.学号=xs.学号or not exists(select kc.课程号from xs_kc,kc where xs_kc.课程号=kc.课程号))select*from xs_kc--10.删除XS1表中前两个同学的基本信息。

delete top(2)from xs1select*from xs1--11.删除XS1表中的所有数据。

delete from xs1select*from xs1--12. 删除XS1表。

drop table xs1--1.使用SQL语句创建视图V_SCORE1,使其显示计算机专业学生的所有基本信息,并保证以后对该视图的修改都要满足专业为“计算机”这个条件。

create view v_score1asselect*from xswhere专业='计算机'with check optionselect*from v_score1--2.使用SQL语句创建视图V_SCORE2,显示计算机专业每个学生的学号、姓名、选修的课程名称及其成绩。

create view v_score2(学号,姓名,课程名,成绩)asselect xs.学号,姓名,课程名,成绩from xs,kc,xs_kcwhere xs.学号=xs_kc.学号and kc.课程号=xs_kc.课程号and专业='计算机'select*from v_score2--3.使用T-SQL语句修改视图V_SCORE2,使其显示每个专业、每门课程的平均成绩,结果格式为:--专业课程名平均成绩--…… …………alter view v_score2asselect专业,课程名,avg(成绩)平均成绩from xs,kc,xs_kcwhere xs.学号=xs_kc.学号and kc.课程号=xs_kc.课程号group by专业,课程名select*from v_score2--4.通过V_SCORE2查看计算机专业每门课程的平均成绩。

select平均成绩from v_score2where专业='计算机'--5.通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:--专业平均成绩--…………select专业,平均成绩from v_score2--6.使用视图V_SCORE1向其基表XS表中输入数据(数据自定),并观察什么样的数据可以插入,什么样的数据不可以插入,并解释为什么。

insert into V_SCORE1values ('10010300xx','xxx',1,'1994-04-29','电子',0,null)insert into v_score1values ('10010300xx','xxx',1,'1994-04-29','计算机',0,null)--只有专业为计算机的同学的数据可以插入,因为在创建视图时有规定视图V_SOCRE1要满足专业='计算机'的条件--7.使用SQL语句删除视图V_SCORE1、V_SCORE2。

drop view v_score1,v_score2实验过程中遇到的问题以及如何解决的?(可以写多条,是否认真填写将影响实验成绩)本次实验的体会(可以写多条,是否认真填写将影响实验成绩)1.思考题1.总结INSERT、UPDATE和DELETE语句的用法。

Insert into <表名>【(<属性列1>【,<属性列2>…)】Values(<常量1>【,<常量2>】… );Update <表名> set <列名>=<表达式>【,<列名>=<表达式>】…【Where<条件>】;Delete from<表名>【Where<条件>】;2.比较基本表(TABLE)与视图(VIEW)的相同点与不同点。

表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。

用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。

视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询或一个虚拟表。

查询仅仅存储在oracle数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。

视图也可以隐藏复杂查询,比如多表查询,但用户只能看见视图。

视图可以有与他所基于表的列名不同的列名。

用户可以建立限制其他用户访问的视图。

表存放实际数据,视图基于表,视图不存放实际数据。

视图的作用有:查询的方便,保障数据的安全性教师评价实验态度 A. 很认真 B. 认真 C. 比较认真 D. 不认真独立完成情况 A. 很好 B. 好 C. 比较好 D. 不好收获和体会 A. 多 B. 比较多 C. 少 D. 很少思考题回答情况 A. 很好 B. 好 C. 比较好 D. 不好评阅教师:日期:。

相关主题