9)查询选课学生的情况,查询结果按课程号升序排列,同一门课程按学号降序排列
10)查询选修了1号课程的学生的最高分 11)各个课程号及相应的选课人数 2.多表查询
1.查询CS年龄在20岁以下的学生姓名 2.查询选修4号课程且成绩在85分以上的学生
3.查询学生131003的平均分 4.查询选修了6号课程且成绩在80分以上的所有学生
16
5.查询与远坂凛同样专业的学生 6.查询已经选课“操作系统”的学生的姓名
7.找出每个学生超过他选修课程平均成绩的课程号
3.视图建立与检索操作
1.建立CS系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有该系的学生
2.建立一个由学生学号和他的平均成绩定义的视图 3.查询平均80分以上的学生学号和平均成绩
4.将CS_Student视图中学号为2015052210的学生姓名改为“桐人”
17
5.向CS_Student视图中插入一个新的学生记录,学号为2015052211,姓名为新一,男,20岁。
七、思考讨论题或体会或对改进实验的建议
1.说明多表连接属于自然连接还是等值连接? 答:属于等值连接。
2.遇到的问题及解决的方法
答:在企业管理器中编辑后,在查询分析器中找不到数据。后面发现
3.体会或建议
八、参考资料
1.《数据库系统实验指导》,单建魁等著,清华大学出版社
18
南昌大学实验报告
学生姓名: 学 号: 专业班级: 信息管理 实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 实验成绩:
一、实验项目名称:数据操纵 二、实验目的:
1.掌握查看、重命名及删除用户定义的数据类型的方法 2.掌握向表中添加、删除和修改数据的方法
三、实验基本原理
SQL中插入元组的INSERT语句格式为
INSERT INTO <表名>[(<属性列1>[,<属性列2>]….)] VALUES(<常量1>[,<常量2>]…);
其功能是将新元组插入到指定表中,其中新元组的属性列1的值为常量1,属性列2的值为常量2….。INTO子句中没有出现属性列,新元组将在这些列上取空值。如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。
修改数据的一般格式为UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE<条件>];其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句给出<表达式>的值用于取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。
删除数据的格式一般为DELETE FROM <表名> [WHERE<条件>];
DELETE语句的功能是从指定表中删除满足条件的的所有元组,如果省略了WHERE 子句,表示要删除表中的所有元组,但表的定义仍在字典中。
四、主要仪器设备及耗材
相互连成LAN的计算机2台以上,安装有SQL Server 2000软件。
五、实验步骤
1.使用insert向表中添加一行或多行数据
向课程表中添加一门新课:insert into Course values('8','学术英语','1','4');
新建一个表G_Course,并向新表中插入每个课程的平均成绩: create table G_Course(Cno char(4),Avg_age int);
insert into G_Course select Cno,avg(Grade)from SC group by Cno; 2.使用update实现一行或成组数据的修改
将s表中学号为“2015052209”的学生的年龄改为19岁: update Student set Sage=19 where Sno='2015052209';
将SC表中成绩少于80的学生成绩改为80:update SC set Grade=80 where grade<80; 3.使用delete删除表中的数据
将新插入的学号为“2015052211”的学生记录删除: delete from Student where Sno=’2015052211’; 4. 创建、重命名和删除用户定义的数据类型
将datetime创建为新的数据类型type:exec sp_addtype [type],datetime,’null’;
19
六、实验数据及处理结果
建立的数据库名和表名及数据如实验二,各查询的结果依次如下各截图: 1.使用insert向表中添加一行或多行数据
1.向课程表中添加一门新课
2.新建一个表G_Course,并向新表中插入每个课程的平
均成绩
3.将s表中学号为“2015052209”的学生的年龄改为19岁
4.将SC表中成绩少于80的学生成绩改为
20