您的当前位置:首页正文

计算机实验报告2---SQL查询、选择查询和动作查询

来源:化拓教育网
《数据库及其应用》实验报告

实验序号:B0901000-03 实验项目名称:SQL查询、选择查询和动作查询 学 号 实验地点 一、实验目的及要求 1.掌握Access表达式的基本概念。了解不同类型数据的常量、参数、运算与函数的使用。 2.理解查询对象的意义和建立方法。 3.掌握SQL语言中SELECT语句的主要应用。 4.掌握SQL的插入、更新、删除操作命令的基本应用。 5.了解SQL定义数据表的基本方法。 6.理解Access选择查询的意义和类别。 7.掌握一般选择查询的操作应用;理解并掌握交叉查询的应用;理解参数查询的意义。 8.理解Access动作查询包含的查询类别。 9.将动作查询与SQL命令进行对比,理解并掌握动作查询的操作应用。 姓 名 指导教师 专业、班 时间 二、实验设备(环境)及要求 PC机,Windows XP,Access 2003,学生管理数据库 三、实验内容要求 (一) SQL视图中表达式练习 1.进入SQL视图及在不同视图间切换 在Access中进入查询的设计视图并在查询的不同视图之间切换。 操作如下: 在Access中打开教学管理数据库。在数据库窗口中选择“查询”对象,双击“在设计视图中创建查询”,弹出查询设计窗口及“显示表”对话框。关闭“显示表”对话框,然后单击查询工具栏的“视图”工具的下拉按钮,选择“SQL视图”选项。结果如下图所示 当要在“设计视图”、“SQL视图”以及显示查询结果的“数据表视图”之间进行切换,以便查看可视化设计、SQL命令以及查询数据时,就是通过这个工具栏的按钮进行切换。 2.不同类型数据的表达式运算 在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。查看并写出各表达式运算结果。 SELECT -5.12^2+(17 mod 3); SELECT \"Hello \"+\,LEFT(\"清华大学出版社\清华大学出版社\; SELECT \"你毕业的年份是\AL(LEFT([你的学号],4))+4; SELECT \"现在是\"+STR(YEAR(DATE()))+\"年\",\"现在的时间是:\"+CSTR(TIME()); SELECT \"张三\">\"李四\",\"ABCD\"<\"abcd\",(DATE()-#1992-10-8#)>1000; (二)SQL命令进行查询和操作 1.练习SQL查询的SELECT语句 启动教学管理数据库,在数据库窗口对象栏中单击“查询”,然后进入SQL视图。在“SQL视图”中输入以下SELECT命令,查看执行结果,并仔细体会查询的实现。 ① 查询“学院”、“专业”、“学生”完整数据。 SELECT * FROM ((学院 INNER JOIN 专业 ON 学院.学院号=专业.学院号) 结果如下 ② 查询“工商管理”专业所有女生信息。 SELECT 专业,学生.* FROM 专业 INNER JOIN 学生 ON 专业.专业号=学生.专业号 WHERE 专业.专业=\"工商管理\" AND 学生.性别=\"女\"; 在弹出后输入“工商管理”后便会显示所有工商管理专业女生的信息 ③ 查询平均成绩在80分以上的各位学生的学号、姓名和平均分。保存为查询对象,对象名“优秀学生”。 SELECT 学生.学号,姓名,AVG(成绩) AS 平均分 FROM 学生 INNER JOIN 成绩 ON 学生.学号=成绩.学号 GROUP BY 学生.学号,姓名 HAVING AVG(成绩)>=80 ; 最后结果显示如下: 单击工具栏保存按钮,弹出“另存为”对话框,输入“优秀学生”,单击“确定”按钮。 ④ 查询没有学生数据的专业编号和专业。 SELECT 专业号,专业 FROM 专业 WHERE 专业号 NOT IN (SELECT 专业号 FROM 学生) ; 结果显示如下: ⑤ 查询“湖北”籍1988年以后出生的学生信息。 SELECT * FROM 学生 WHERE 籍贯 LIKE \"湖北*\" AND 生日 >=#1988-1-1# ; ⑥ 查询选课人数最多的课程的课程号、课程名。 SELECT TOP 1 课程.课程号,课程名 FROM 课程 INNER JOIN 成绩 ON 课程.课程号=成绩.课程号 GROUP BY 课程.课程号,课程名 ORDER BY COUNT(*) DESC ; 结果显示如下: 2.练习SQL的插入、更新、删除操作命令 ① 在课程表中插入一门新课,数据如命令所示。 INSERT INTO 课程 VALUES(\"06020101\会计学原理\; ② 将“法学院(04)”开设课程的学分增加1分。 UPDATE 课程 SET 学分=学分+1 WHERE 学院号=\"04\" ③ 删除“信息学院(09)”开设的没有学生选修的课程。 DELETE FROM 课程 WHERE 学院号=\"09\" AND 课程号 NOT IN (SELECT 课程号 FROM 成绩) 3.创建“教师”表,包括:工号、姓名、性别、生日、职称、基本工资、学院号。写出创建命令。 最后教师表创建成功, (三)选择查询操作 1.进入查询设计视图进行交互式选择查询设置 启动教学管理数据库。 查询“专业”表,显示开设的所有专业涉及的学科门类。 操作如下 将“专业”表加入设计视图,在QBE界面中“字段”栏选择“专业类别”字段显示 在设计视图的空白处单击右键,从弹出的快捷菜单中选择“属性”命令,打开“属性”对话框,选择 “唯一值”属性值“是”。 查询各专业学生的人数。 操作如下 将“专业”表和“学生”表加入设计视图,在QBE界面中“字段”栏选中“专业号”和“专业”字段显示 单击工具栏中的“总计”按钮,在QBE中增加“总计”栏。将“专业号”和“专业”字段设置为“分组”,然后选择“学生”表的“学号”字段,设置为“计数”,最后在学号前加上“人数:”,运行查询。 ③ 查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据。 将“学生表”加入设计视图。选择“学号”、“姓名”字段显示,在第三列输入“注:‘尚未选课’”,选中“显示”复选框。然后在第四列选择“学号”但不显示。在“条件”栏中输入一个子查询“Not In S(ELECT 学号FROM 成绩)”。运行即可。 2.进行交叉表查询 将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。 步骤:将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。启动选择查询设计窗口,将“学生”、“成绩”和“课程”表加入设计窗口。选择“查询”→“交叉表查询”命令。在QBE窗格中选择“学生”表的“学号”、“姓名”作为行标题,“课程名”作为列标题,“成绩”总计后作为“值”。运行查询即可。 最后结果如下 3.进行参数查询 通过参数查询指定日期以后出生的某个民族的学生信息。 步骤:启动选择查询设计窗口,将“学生”表加入设计窗口,在QBE窗口中选择“*”表示输出学生表所有字段。选中“生日”字段,去掉“显示”行的复选框,在条件行输入>[SR];按同样方式设置“民族”字段。 然后选择“查询”→“参数”命令,弹出“查询参数”对话框,分别设置SR和MZ的类型,单击“确定“,设置完成。 (四)动作查询操作 1.生成表查询操作练习 将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”。 操作结果如下 2.删除查询操作 删除“优秀学生名单”表中,平均分在85分以下的记录。 进入设计视图,加入“优秀学生名单”表。选择“查询”→“删除查询”命令,窗口改为“删除查询”,QBE栏目发生变化,出现“删除”栏,调整或撤销其他栏。 在“字段”栏中选择“平均分”,此时“删除”栏默认为Where.。在“条件”栏中输入<85。 单击“运行”按钮运行,数据删除。 结果如下 3.追加查询操作 将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表, 步骤:在“字段”栏设置“学号”、“姓名”和“成绩”字段。单击“总计”按钮,增加“总计”栏。设置“学号”和“姓名”为分组字段,“成绩”字段为“平均值”字段,在“条件”栏中输入>=80and<85. 选择“查询”→“追加查询”命令,打开“追加”对话框。选择“优秀学生名单”表,单击“确定”按钮。 设计视图的QBE窗格中增加“追加到”栏,选择“学号”、“姓名”和“平均分”字段,设计完成, 4.更新查询操作 将没有学生选修的课程的学分减少1分。 将没有学生选修的课程的学分减少1分。 启动设计视图,添加“课程”表。选择“查询”“更新查询”命令,设计视图变为“更新查询”,QBE窗格中增加“更新到”栏。 选中“学分”字段,在“更新到”栏中输入“课程.学分-1”。 选中“课程号”字段,在“条件”栏中输入“Not In (SELECT 课程号FROM 成绩)”,设计完成,单击“运行”按钮运行查询。 四、回答问题 1.有哪几种方式可进入“SQL视图”?如果用“记事本”编写了SQL语句,是否可以在SQL视图中使用?如何操作? 答:单击查询工具栏的“视图”工具的下拉按钮,选择“SQL视图”选项或单击菜单栏中“视图”,选择“SQL视图”。 2.为什么不能在数字常量前加“¥”或“$”符号表示币值常量?“¥”或“$”有何作用? 答:“$”表示可以在“格式”属性中的任何位置使用这些字符并将这些字符原文照印。 3.如果在修改“法学院”学分的操作中要求根据“学院名”作为输入条件修改数据,查询命令应该如何写? 答:UPDATE 课程 SET 学分=学分+1 WHERE 学院名=法学院 4.不保存查询,与将查询保存为查询对象有何区别?查询对象有什么作用? 答:将查询对象保存为查询对象后,可将查询功能反复执行,并作进一步处理。作用:当需查看查询结果时,进入查询对象界面,选中相应的查询对象单击“打开”,即可运行查询,查看结果;由于查询的结果与表的格式相同,所以查询对象还可以进一步成为其他操作的数据源。 5.根据以下给定的查询要求,写出对应的查询命令。 ① 查询学生中的民族来源,显示不重复的民族数据。 SELECT DISTINCT 民族 FROM 学生; ② 查询各民族男生和女生的人数。 SELECT DISTINCT 民族,人数 FROM 学生; ③ 查询没有学生选修的课程信息以及开课的学院名。 SELECT 课程号,学院名 FROM 课程 WHERE 课程号 NOT IN (SELECT 课程号FROM 课程); ④ 插入几条教师记录。 INSERT INTO 教师 VALUES(“张兰”, “赵也声”); ⑤ 给“教授”职称的教师的基本工资增加10%。 UPDATE 教师 SET 工资=工资*(1+10%) WHERE 职称=教授; ⑥ 删除没有学生就读的专业数据。 DELECT FROM 专业 WHERE 专业号 NOT IN ( SELECT 专业号 FROM 学生); ⑦ 删除教师表。 DELECT TABLE 教师TEXT(6) PRIMARY KEY, (工号 TEXT(6) PRIMARY KEY, 姓名 TEXT(10) NOT NULL, 性别 TEXT(2), 生日 DATE, 职称 TEXT(8), 基本工资 MONEY, 学院号 TEXT(2) REFERENCES 学院(学院号)); 6.深入体会交叉表查询的作用,简述交叉表查询的实质意义。作为行标题的字段最多可以设置几个?作为列标题和交叉值的字段最多可以设置几个? 答:交叉表查询都是一种特殊的汇总查询。交叉表事实上反映的是对两种实体极其练习的关系表示,转换为另一种二维表结构来显示。行标题的字段可是多个,列标题只能是一个。 7.参数查询的参数设置是否一定要通过菜单设置类型?通过菜单设置的参数是否一定要出现在查询中? 答:是。不一定 8.生成表查询实现的是SQL语言中什么语句的功能? 答:实现SELECT语句中INTO子句的功能。 9.追加查询对应SQL的什么语句?该语句是否只具有追加查询的功能?若有其他功能,如何实现交互操作? 答:INSERT语句。不是。 五、分析讨论 进一步熟悉了对SQL以及其他各种查询。掌握了Access表达式的基本概念。了解了不同类型数据的常量、参数、运算与函数的使用。理解了查询对象的意义和建立方法。掌握了SQL语言中SELECT语句的主要应用。掌握了SQL的插入、更新、删除操作命令的基本应用。了解了SQL定义数据表的基本方法。 六、教师评语 1.按时完成实验; 2.实验内容和过程记录完整; 3.回答问题完整、正确; 4.有实验的心得或讨论; 5.实验报告的撰写认真、格式符合要求,没有抄袭行为。 成绩 签名:张爱菊 日期:2011.5

因篇幅问题不能全部显示,请点此查看更多更全内容