《数据库应用实验报告.doc》由会员分享,可在线阅读,更多相关《数据库应用实验报告.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库及其应用(课程编号:B)实验报告(2013-2014学年第2学期) 实验成绩: 学 号: 姓 名: 曹冬玲 专业班级: 房产1301 课 堂 号: B 任课教师: 刘勘 完成日期: 2014年5月29日星期四 一、实验目的及要求 (1)掌握SQL语言中SELECT语句的主要应用。 (2)掌握SQL的插入、更新、删除操作命令的基本应用。 (3)了解SQL定义数据表的基本方法。 (4)理解查询对象的意义和建立方法。 (5)理解Access选择查询的意义和类别。 (6)掌握一般选择查询的操作应用。 (7) 理解并掌握交叉查询的应用。 (8)理解参数查询的意义。 (9)理解Access动作查询包
2、含的查询类别。 (10)理解并掌握动作查询的操作应用。 (11)将动作查询与SQL命令进行对比。二、实验设备(环境)及要求PC机,Windows 7,Office 2010(主要是Access 2010)实验参考教材:数据库及其应用(Access及Excel)学习与实验实训教程(第二版)。 (以下简称实验教程)三、实验内容及记录(一)实验报告 1、练习SQL查询的SELECT语句进入项目管理数据库窗口,进入SQL视图。在“SQL视图”中输入以下SELECT命令,查看执行结果,并仔细体会查询的实现。(1)查询“学院”、“专业”、“学生”完整数据。SELECT *FROM(学院 INNER JOI
3、N 专业 ON 学院.学院编号=专业.学院编号) INNER JOIN 学生 ON 专业.专业编号=学生.专业编号);(2)查询“工商管理”专业所有女生的信息。SELECT 专业名称,学生.* FROM 专业 INNER JOIN 学生 ON 专业.专业编号=学生.专业编号 WHERE 专业.专业名称=“工商管理”AND 学生.性别=“女”;(3)查询作为“项目负责人”的学生的学号、姓名、性别。保存为“负责人”查询。SELECT 学生.学号,姓名,性别 FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号 WHERE 分工=“负责人”;(4)查询没有参与项目的学生学
4、号、姓名、专业名称。SELECT 学号,姓名,专业名称 FROM 学生 INNER JOIN 专业 ON 学生.专业编号=专业.专业编号 WHERE 学号 NOT IN (SELECT 学号 FROM 项目分工);(5)查询参与项目超过1项的学生学号、姓名和参与项目数。SELECT 学生.学号,姓名,COUNT(*) FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号 GROUP BY 学生.学号,姓名 HAVING COUNT(*)1;(6)查询参与项目最多的学生学号、姓名和参与项目数。SELECT TOP 1 学生.学号,姓名,COUNT(*)AS 参与项目数
5、 FROM 学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号 GROUP BY 学生.学号,姓名 ORDER BY COUNT(*) DESC;(7)查询与农村或农业有关的项目及负责人姓名。SELECT 项目.*,姓名 FROM (学生 INNER JOIN 项目分工 ON 学生.学号=项目分工.学号) INNER JOIN 项目 ON 项目.项目编号=项目分工.项目编号 WHERE 分工=“负责人”AND(项目名称 LIKE “*农业*”OR 项目名称LIKE “*农业*”);2、练习SQL的创建表、插入、更新、删除操作命令(1)在教师表中添加一个新教工信息,数据如下所
6、示:INSERT INTO 教师 VALUES(“Z0903”、“杨飞”、“男”、“讲师”、“09”);(2)将“校级”项目的经费增加1000元:UPDATE项目 SET 经费=经费+1000 WHERE 项目类别=“校级”;(3)创建“已结项项目”表,包括:项目编号、项目名称、项目类别、指导教师工号、负责人学号。CREATE TABLE 已结项项目(项目编号 TEXT(10) PRIMARY KEY, 项目名称 TEXT(60) NOT NULL, 指导教师工号 TEXT(8) REFERENCES 教师(工号), 负责人学号 TEXT(8) REFERENCES 学生(学号);(4)将已结
7、项的项目转入“已结项项目”表,然后删除“已结项”的项目数据。先执行下列语句:INSERT INTO 已结项项目(项目编号,项目名称,指导教师工号,负责人学号)SELECT 项目.项目编号,项目名称,指导教师工号,学号 FROM 项目 INNNER JOIN 项目分工 ON 项目.项目编号=项目分工.项目编号 WHERE 分工=“负责人”AND是否结项;然后执行下列语句:DELETE FROM 项目WHERE 是否结项;3、进入查询设计视图进行交互式选择查询设置进入项目管理数据库窗口,然后进入设计视图(1)查询“专业”表,显示开设的所有专业涉及的学科门类。通过“显示表”对话框将“专业”表加入设计
8、视图。在设计网格中“字段”栏选择“专业类别”字段并勾选“显示”栏。因为该字段的值有重复,因此进入“属性表”对话框,选择“唯一值”属性值“是”。(2)查询各专业学生的人数。将“专业”表和“学生”表加入设计视图。在“字段”栏中选中“专业编号”和“专业名称”字段显示,然后单击工具栏中的“汇总”按钮增加“总计”栏。将“专业编号”和“专业名称”字段设置为“分组”,然后选择“学生”表的“学号”字段,设置其为“计数”,最后,在学号前面加上“人数:”,作为查询后的列名。设计完成。(3)查询没有参与项目的男学生学号、姓名,即“项目分工”表中没有记录的学生。将“学生”表加入设计视图。选择“学号”、“姓名”字段显示
9、,在第三列处输入“注:未参与项目”,选中“显示”复选框。然后,在第四列中选择“学号”但不显示,只作为比较的对象。在“条件栏”输入一个子查询“NOT IN (SELECT 学号 FROM 项目分工)设置完毕,运行。4、设置交叉表查询两类实体多对多联系可设置交叉查询。将学生的“学号”和“姓名”作为行标题,“项目编号”作为列标题,“分工”作为交叉数据,生成交叉表。在查询设计视图,添加“学生”、“项目分工”表。在设计窗格中添加“学号、姓名、项目编号、分工”字段。单击“交叉表”按钮,添加“总计”栏和“交叉表”栏。在“交叉表”栏设置“学号”、“姓名”作为行标题,“项目编号”作为列标题,“分工”作为“值”,
10、在“总计”栏设置分工为“First”。这样交叉表查询就设计完毕,运行查询,可以看到交叉表查询的效果。5、进行参数查询通过参数查询指定日期以后出生的某个民族的学生信息。将“学生”表加入查询设计窗口,在设计窗格中选择“*”表示输出学生表所有字段。然后,选中“生日”字段,去掉“显示”行的复选框,在条件行输入“SR”同样设置“民族”字段。然后,单击“参数”按钮,弹出“查询参数”对话框,分别设置“SR”和“MZ”的类型,单击“确定”按钮,设置完毕。6、生成表查询操作将实验六第二项实验中“已结项项目”的处理通过生成表方式完成。进入查询设计视图,添加“项目”和“项目分工”表。设置“项目编号、项目名称、指导教
11、师工号、学号、是否结项”字段并设置相应条件,然后单击“生成表”按钮,弹出“生成表”对话框,输入生成表的名称,单击“确定”,运行查询,结果被保存到当前数据库中。由于生成表中有教师工号和学生学号,可到关系图窗口中建立相应的参照。7、删除查询操作删除“已结项项目2”表中的记录。进入查询设计视图,加入“已结项项目2”表。单击“删除”按钮,这时设计窗格栏目发生变化,出现“删除”栏。由于无条件删除全部数据,直接单击“运行”按钮即可。8、追加查询操作追加查询时将一个查询的结果追加插入到一个现有表中。将本实验的第一项实验(即5)通过追加查询完成。由于表已经存在,所以无须创建表。在查询设计视图内添加“项目”和“
12、项目分工”表。设置“项目编号、项目名称、指导教师工号、学号、是否结项”字段并设置相应条件,单击“追加”按钮,弹出“追加表”对话框。输入“已结项项目2”,单击“确定”按钮。这时,设计窗格中增加“追加到”栏。显示相关的字段名。单击“运行”按钮,完成数据记录的追加。9、更新查询操作将“校级”项目经费增加1000元的操作如下在设计视图内添加“项目”表,单击“更新”按钮,设计窗格增加“更新到”栏。添加“经费”字段,然后在“更新到”栏中输入“项目.经费+1000”。添加“项目类别”字段,在“条件”栏中输入“校级”,设计完成,单击“运行”按钮运行查询。(二)回答问题(1)不命名保存查询,与将查询保存为查询对
13、象有何区别?查询对象有什么作用? 答:将查询保存为查询对象后,可将查询功能反复执行,并做进一步处理。 作用:当需查看查询结果时,进入查询对象界面,选中相应的查询对象单击“打开”,即可运行查询,查看结果;由于查询结果与表的格式相同,所以查询对象还可以进一步成为其他操作的数据源。(2)上述实验中,插入“已结项项目”表的命令是否可以省略字段列表?为什么? 答:可以,因为select语句的输出列与要赋值的表中对应字段值的数据类型相同。(3)删除“已结项项目”的命令的条件为什么没有比较对象?(4)深入体会交叉表查询的作用,简述交叉表查询的实质意义。为什么本实验的交叉表只添加了两个表? 答:交叉表查询都是
14、一种特殊的汇总查询,交叉表事实上反映的是对两种实体及其联系的关系表示,转换为另一种二维表结构来显示。(5)在交叉表设置时,作为行标题的字段最多可以设置几个?作为列标题和交叉值的字段最多可以设置几个? 答:行标题的字段可设置多个,列标题和交叉值的字段只能设置一个。(6)参数查询的参数设置是否一定要通过对话框设置?通过对话框设置的参数是否一定要出现在查询中? 答:是。不一定。(7)生成表查询实现的是SQL语言中什么语句的功能? 答:实现SELECT语句中INTO子句的功能。(8) 追加查询对应SQL的什么语句?该语句是否只具有追加查询的功能?若有其他功能,如何实现交互操作?答:INSERT语句。不是。假如values子句可以先计算出个表达式的值,然后追加到表中作为一条新纪录。 四、分析讨论 SQL语句确实比较难,不容易掌握,做实验报告的过程中遇到许多问题,还需要解决,掌握并熟练应用还需要一段时间。五、教师评阅1按时完成实验:是: 否:2实验内容和过程记录完整:完整: 基本完整: 不完整: 3回答问题完整、正确:是: 一般: 差: 4有实验的心得或讨论:是: 否:5实验报告的撰写认真、格式符合要求,没有抄袭行为。是: 一般: 差: