内容发布更新时间 : 2024/11/20 14:43:47星期一 下面是文章的全部内容请认真阅读。
实验三 多表查询及数据更新
? 实验目的
1. 掌握SELECT语句在多表查询中的应用 2. 掌握多表连接的几种连接方式及应用 3. 掌握利用INSERT命令实现对表数据的插入操作 4. 掌握利用UPDATE命令实现对表数据的修改操作 5. 掌握利用DELETE命令实现对表数据的删除操作
? 实验内容和要求
一、连接查询
1. 查询女学生的学生学号及总成绩 2. 查询李勇同学所选的课程号及成绩 3. 查询李新老师所授课程的课程名称 4. 查询女教师所授课程的课程号及课程名称 5. 查询姓“王”的学生所学的课程名称
6. 查询选修“数据库”课程且成绩在80到90之间的学生学号及成绩 7. 查询选修“C02”课程的学生的平均年龄 8. 查询学习课程名为“数学”的学生学号和姓名
9. 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩 10. 查询在第3学期所开课程的课程名称,选修其课程的学生学号和成绩
二、嵌套查询
1. 查询至少选修两门课程的男学生姓名 2. 查询与李勇同一个系的同学姓名;
3. 查询学号比刘晨同学大,而年龄比他小的学生姓名
4. 查询出生日期大于所有女同学出生日期的男同学的姓名及系别 5. 查询成绩比该课程平均成绩高的学生的学号、课程号及成绩 6. 查询不讲授“C01”课的教师姓名
7. 查询没有选修“C02”课程的学生学号及姓名 8. 查询选修了“数据库”课程的学生学号、姓名及系别 9. 查询选修了全部课程的学生姓名
10. 分别用子查询和连接查询,求“C02”号课程在80分以上的学生信息
三、数据更新
1. 向Student表中插入记录('20050203','张静','女','1981-3-21','CS' ,'电子商务') 2. 插入学号为20050302,姓名为李四学生信息 3. 把男学生记录保存到表TS中
(提示:利用select into 命令可备份数据库中的表
6
格式:select * into 新表名 from 原表名 where 子句;)
4. 将学号为20050202的学生姓名改为张华,系别改为“CS”,专业改为“多媒体技术” 5. 将20050201学生选修“C03”号课程的成绩改为该课的平均成绩 6. 把女同学的成绩提高5%
7. 把选修了“数据库”课程学生的成绩全改为空值(NULL) 8. 删除学号为20050302的学生记录 9. 把“刘晨”同学的选课记录全部删除 10. 删除电子商务专业所有学生的选课记录
? 思考题
1. 使用存在量词[NOT]EXISTS的嵌套查询时,何时外层查询的WHERE条件为真,何时为假? 2. DROP命令和DELETE命令的本质区别是什么?
3. 利用INSERT、UPDATE和DELETE命令可以同时对多个表操作吗?
7
实验四 索引与视图的创建
? 实验目的
1. 掌握索引的创建和使用 2. 掌握视图的创建和删除
? 实验内容和要求
一、索引的创建与使用
1.用索引管理器创建SC表的索引IX_XS_KC。
(1)选择要创建索引的数据库文件夹,并在右边的对象窗口中选择并打开其中的“表”对象。 (2)选择所要创建索引的SC表,右键单击该表,在弹出的快捷菜单中选择“设计”命令,然后在工具栏中单击“管理索引和键”按钮,打开“索引和键”窗口。 (3)单击其中的“添加”按钮,创建新的索引,并为其设置相应的属性。
为SC表创建一个基于“课程号”列和“成绩”列的索引IX_XS_KC,其中课程号列按升序排列,成绩列按降序排列。 设置完成后,如图3所示。
图3 创建索引IX_XS_KC
2.强制使用刚才创建的索引查询数据。
在查询命令窗口中输入以下SQL查询命令并执行: SELECT SNO,CNO,DEGREE FROM SC
WITH (INDEX (IX_XS_KC)) WHERE DEGREE>=60
观察一下显示出来的数据是否有序。 3.利用SQL命令实现下列操作:
(1) 为Student表创建一个名为S_dept的索引,以系别排序
(2) 为Teacher表创建一个名为T_name的聚集索引,以Tname降序排序 (3) 删除S_dept索引
8
二、视图的创建与使用
1. 创建一个简单视图view1,查询“计算机系”学生的信息 2. 创建一个简单视图view2,统计每门课程的选课人数和最高分 3. 创建一个复杂视图view3,查询与“张立”同学同一系别的学生信息 4. 删除视图View3
? 思考题
1.使用索引为什么能提高查询速度? 2.索引经常被建立在哪些字段上? 3.聚集索引与其他索引有什么不同?
9