
《数据库及其应用》实验报告3.doc
4页《数据库及其应用》实验报告实验序号:B0901000-03 实验项目名称:SQL查询、选择查询和动作查询学 号姓 名专业、班实验地点现教中心指导教师时间2009年4月一、实验目的及要求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中进入查询的设计视图并在查询的不同视图之间切换2.不同类型数据的表达式运算在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。
查看并写出各表达式运算结果SELECT -5.12^2+(17 mod 3);SELECT "Hello "+",World!",LEFT("清华大学出版社",2)+RIGHT("清华大学出版社",3);SELECT "你毕业的年份是", VAL(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 学院.学院号=专业.学院号) 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","会计学原理",3,"06");② 将“法学院(04)”开设课程的学分增加1分。
UPDATE 课程 SET 学分=学分+1 WHERE 学院号="04"③ 删除“信息学院(09)”开设的没有学生选修的课程DELETE FROM 课程 WHERE 学院号="09" AND 课程号 NOT IN (SELECT 课程号 FROM 成绩)3.创建“教师”表,包括:工号、姓名、性别、生日、职称、基本工资、学院号写出创建命令三)选择查询操作1.进入查询设计视图进行交互式选择查询设置启动教学管理数据库① 查询“专业”表,显示开设的所有专业涉及的学科门类② 查询各专业学生的人数③ 查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据2.进行交叉表查询将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表3.进行参数查询通过参数查询指定日期以后出生的某个民族的学生信息四)动作查询操作1.生成表查询操作练习将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”2.删除查询操作删除“优秀学生名单”表中,平均分在85分以下的记录3.追加查询操作将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表, 4.更新查询操作将没有学生选修的课程的学分减少1分。
写出以上要求的操作步骤并截取必要的图片四、回答问题1.有哪几种方式可进入“SQL视图”?如果用“记事本”编写了SQL语句,是否可以在SQL视图中使用?如何操作?2.为什么不能在数字常量前加“¥”或“$”符号表示币值常量?“¥”或“$”有何作用?3.如果在修改“法学院”学分的操作中要求根据“学院名”作为输入条件修改数据,查询命令应该如何写?4.不保存查询,与将查询保存为查询对象有何区别?查询对象有什么作用?5.根据以下给定的查询要求,写出对应的查询命令① 查询学生中的民族来源,显示不重复的民族数据② 查询各民族男生和女生的人数③ 查询没有学生选修的课程信息以及开课的学院名④ 插入几条教师记录⑤ 给“教授”职称的教师的基本工资增加10%⑥ 删除没有学生就读的专业数据⑦ 删除教师表6.深入体会交叉表查询的作用,简述交叉表查询的实质意义作为行标题的字段最多可以设置几个?作为列标题和交叉值的字段最多可以设置几个?7.参数查询的参数设置是否一定要通过菜单设置类型?通过菜单设置的参数是否一定要出现在查询中?8.生成表查询实现的是SQL语言中什么语句的功能?9.追加查询对应SQL的什么语句?该语句是否只具有追加查询的功能?若有其他功能,如何实现交互操作?五、分析讨论 (根据实验写出一些心得或分析等)六、教师评语1.按时完成实验;2.实验内容和过程记录完整;3.回答问题完整、正确;4.有实验的心得或讨论;5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
签名: 杨璠日期:2009.5成绩。
