《数据库及其应用》实验报告2Word下载.docx
《《数据库及其应用》实验报告2Word下载.docx》由会员分享,可在线阅读,更多相关《《数据库及其应用》实验报告2Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
理解并掌握交叉查询的应用;
理解参数查询的意义。
8.理解Access动作查询包含的查询类别。
9.将动作查询与SQL命令进行对比,理解并掌握动作查询的操作应用。
二、实验设备(环境)及要求
硬件设备:
CPU:
P—43.0Ghz、RAM256MB硬盘40GB16XDVD
软件设备:
OS:
WindowsXP(Professional2002)应用软件:
MS-Office2003
三、实验内容与步骤
(一)SQL视图中表达式练习
1.进入SQL视图及在不同视图间切换
在Access中进入查询的设计视图并在查询的不同视图之间切换。
打开数据库,在窗口中选择查询对象,双击在设计视图中创建表查询,弹出查询设计窗口及显示表对话框,关闭显示表对话框,单击查询工具栏的视图工具的下拉按钮,选择SQL视图选项。
当要在设计视图,SQL视图以及显示查询结果的数据表视图之间进行切换,以便查看可视化设计,SQL命令以及查询数据库时,就通过这个工作栏按钮进行切换。
2.不同类型数据的表达式运算
在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。
查看并写出各表达式运算结果。
SELECT-5.12^2+(17mod3);
SELECT"
Hello"
+"
World!
"
,LEFT("
清华大学出版社"
2)+RIGHT("
3);
你毕业的年份是"
VAL(LEFT([你的学号],4))+4;
现在是"
+STR(YEAR(DATE()))+"
年"
,"
现在的时间是:
+CSTR(TIME());
张三"
>
李四"
ABCD"
<
abcd"
,(DATE()-#1992-10-8#)>
1000;
(二)SQL命令进行查询和操作
1.练习SQL查询的SELECT语句
启动教学管理数据库,在数据库窗口对象栏中单击“查询”,然后进入SQL视图。
在“SQL视图”中输入以下SELECT命令,查看执行结果,并仔细体会查询的实现。
①查询“学院”、“专业”、“学生”完整数据。
SELECT*
FROM((学院INNERJOIN专业ON学院.学院号=专业.学院号)
INNERJOIN学生ON专业.专业号=学生.专业号);
②查询“工商管理”专业所有女生信息。
SELECT专业,学生.*
FROM专业INNERJOIN学生ON专业.专业号=学生.专业号
WHERE专业.专业="
工商管理"
AND学生.性别="
女"
;
③查询平均成绩在80分以上的各位学生的学号、姓名和平均分。
保存为查询对象,对象名“优秀学生”。
SELECT学生.学号,姓名,AVG(成绩)AS平均分
FROM学生INNERJOIN成绩ON学生.学号=成绩.学号
GROUPBY学生.学号,姓名
HAVINGAVG(成绩)>
=80;
单击工具栏保存按钮,弹出“另存为”对话框,输入“优秀学生”,单击“确定”按钮。
④查询没有学生数据的专业编号和专业。
SELECT专业号,专业
FROM专业
WHERE专业号NOTIN(SELECT专业号FROM学生);
⑤查询“湖北”籍1988年以后出生的学生信息。
SELECT*
FROM学生
WHERE籍贯LIKE"
湖北*"
AND生日>
=#1988-1-1#;
⑥查询选课人数最多的课程的课程号、课程名。
SELECTTOP1课程.课程号,课程名
FROM课程INNERJOIN成绩ON课程.课程号=成绩.课程号
GROUPBY课程.课程号,课程名
2.练习SQL的插入、更新、删除操作命令
①在课程表中插入一门新课,数据如命令所示。
INSERTINTO课程
VALUES("
06020101"
"
会计学原理"
3,"
06"
);
②将“法学院(04)”开设课程的学分增加1分。
UPDATE课程
SET学分=学分+1
WHERE学院号="
04"
③删除“信息学院(09)”开设的没有学生选修的课程。
DELETEFROM课程
09"
AND课程号NOTIN(SELECT课程号FROM成绩)
3.创建“教师”表,包括:
工号、姓名、性别、生日、职称、基本工资、学院号。
写出创建命令。
(三)选择查询操作
1.进入查询设计视图进行交互式选择查询设置
启动教学管理数据库。
1查询“专业”表,显示开设的所有专业涉及的学科门类。
将专业表加入设计视图,在QBE界面中字段栏选择专业类别字段显示,因为该字段的值有重复,在设计视图的空白处单击右键,从弹出的快捷菜单中选择属性命令,打开属性对话框,选择唯一值属性是。
2查询各专业学生的人数。
将专业表和学生表加入设计视图,在QBE界面中字段栏选中专业号,专业,单击工具栏中的总计按钮,在QBE中增加总计栏,将专业号和专业字段设置为分组,选择学生表的学号字段,设置其为计数,最后在学号面前加上人数
3查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据。
将学生表加入设计视图,选择学号姓名字段,在第三列处输入注:
‘尚未选课’选中显示复选框,然后在第四列中选择学号但不显示,只是作为比较的对象,在条件栏中输入一个子查询“NOTIN(SELECT学号FROM成绩)”
2.进行交叉表查询
将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。
将学生,成绩,课程加入设计窗口,选择查询到交叉表查询命令,在QBL窗格中选择学生表的学号,姓名,作为行标题,课程名作为列标题,成绩总计后作为值。
3.进行参数查询
通过参数查询指定日期以后出生的某个民族的学生信息。
将学生表加入设计窗口,在QBE窗口中选择*表示输出学生表所有字段,选中生日字段,去掉显示行的复选框,在条件行输入>
[SR];
按同样方式设置民族字段,然后选择查询,参数命令,弹出查询参数对话框,分别设置SR和MZ的类型,单击确定按钮,设置完毕。
(四)动作查询操作
1.生成表查询操作练习
将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”。
输入SQL命令后选择查询,生成表查询,输入表的名称,单击确定。
2.删除查询操作
删除“优秀学生名单”表中,平均分在85分以下的记录。
进入设计视图,加入优秀学生名单表,选择查询删除查询命令,窗口改为删除查询,QBE栏目发生变化,出现删除栏,调整或撤销其他栏。
在字段栏中选择平均分,这时删除栏默认值为Where。
在条件栏输入<
85.单击工具栏中运行按钮,将删除数据,如果选择查询,删除查询命令后,不进行条件设置而直接运行,即为无条件删除,将删除表中所有记录。
3.追加查询操作
将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表,
启动设计视图,添加学生和成绩表,在字段栏设置学号和姓名为分组字段,单击工具栏总计按钮,增加总计栏,设置学号和姓名为分组字段,成绩字段为平均值字段,在条件栏中输入>
=80and<
85
选择查询,追加查询命令,打开追加对话框,选择优秀学生名单表,单击确定按钮。
设计视图的QBE窗格中增加追加到栏,选择学号,姓名,和平均分字段,设计完成,运行查询,数据被追加到优秀学生名单表中。
4.更新查询操作
将没有学生选修的课程的学分减少1分。
启动设计视图,添加课程表。
选择查询更新查询命令,设计视图变为更新查询,QBE窗格中增加更新到栏,选中“学分”字段,然后再“更新到”栏中输入“课程.学分—1”选中“课程号”字段,在条件栏中输入“NotIn(SELECT课程号FROM成绩)”,设计完成,单击运行。
四、回答问题
1.有哪几种方式可进入“SQL视图”?
如果用“记事本”编写了SQL语句,是否可以在SQL视图中使用?
如何操作?
:
进入“SQL视图的方式是:
答:
1.在“查询设计”的工具栏的第一个按钮下拉框中的选择列表有“SQL视图”。
2.在查询界面的使用设计是图中进行与“SQL视图”的切换。
2.为什么不能在数字常量前加“¥”或“$”符号表示币值常量?
“¥”或“$”有何作用?
因为在数字常量前加“¥”或“$”符号表示币值常量,系统会默认为文本型或非法字符。
而SQL定义时要用事先规定的代表符来表示各种类型。
货币通常默认为MONEY.¥或“$”的作用是:
它们属于货币的格式属性中的任何位置使用这些字符并且将这些字符原文照印。
3.如果在修改“法学院”学分的操作中要求根据“学院名”作为输入条件修改数据,查询命令应该如何写?
UPDEAT课程SET学分=学分+1WHERE学院名=“法学院”
4.不保存查询,与将查询保存为查询对象有何区别?
查询对象有什么作用?
不保存查询,与将查询保存为查询对象的区别是:
不保存查询,是当关闭查询窗口时,查询的结果也就消失。
如果将查询保存为查询对象的话在SELECT的语句中加入INTO《表名》,该子句讲查询的结果以明明的表的形式保存起来,此时表的数据时独立的。
查询对象的作用是可以作为表使用并可以得到查询结果。
5.根据以下给定的查询要求,写出对应的查询命令。
①查询学生中的民族来源,显示不重复的民族数据。
SELECTDISTINCT民族类别
;
②查询各民族男生和女生的人数。
SELECTCOUNT(*)AS人数,N1N2
FROM学生男生ASN1女生ASN2
WHERE“学生.民族类别=民族.族类别”
③查询没有学生选修的课程信息以及开课的学院名。
SELECT课程.课程名.课程号,学院。
学院名学生.课程号
FROM课程学院学生
WHERE课程.课程号<
学生.课程号AND课程.学院名=学院.学院名
④插入几条教师记录。
INSERTINTO教师
VALUES(教师.薪金,年龄,工龄……)
⑤给“教授”职称的教师的基本工资增加10%。
UPDATE薪金
SET薪金=薪金+薪金×
0.1
WHERE职务=“教授”;
⑥删除没有学生就读的专业数据。
DELETEFROM专业
WHERE学生.专业号<
专业.专业号
⑦删除教师表。
DROPTABLE(*)
FROM教师
6.深入体会交叉表查询的作用,简述交叉表查询的实质意义。
作为行标题的字段最多可以设置几个?
作为列标题和交叉值的字段最多可以设置几个?
交叉表查询的作用是是ACCESS支持的一种特殊的汇总查询,它可以根据人们所希望的的那样将数据放入,只保留不重复的数据。
作为作为行标题的字段最多可以设置一个或多个字段;
作为列标题和交叉值的字段最多可以设置一个字段。
7.参数查询的参数设置是否一定要通过菜单设置类型?
通过菜单设置的参数是否一定要出现在查询中?
参数查询的参数设置不一定要通过菜单设置类型,通过参数查询是为了避免用户在使用参数查询时出错的机率。
通过菜单设置的参数一定要出现在查询中,因为用户可以通过不同的参数输入去完成不同的查询任务。
8.生成表查询实现的是SQL语言中什么语句的功能?
生成表查询实现的是SQL语言中SELECT语句中INTO子句的功能。
9.追加查询对应SQL的什么语句?
该语句是否只具有追加查询的功能?
若有其他功能,如何实现交互操作?
加查询对应SQL的INSET语句该语句有两种语法,一种是将一条记录追加到表中,另外一种是将一个查询的结果追加到表中。
要进行这两种功能的相互转换:
在可视化操作中,第一种语法的实现可以在表的数据表是图中完成,第二种用法的实现就是通过追加查询。
追加查询是将从表或查询的对象中查询出来的记录添加到另一个表中去被追加的记录必须是已保留的表。
可以通过追加相同的表名来实现交互操作。
五、分析讨论
通过做本次试验我掌握了Access表达式的基本概念,了解不同类型数据的常量、参数、运算与函数的使用,理解查询对象的意义和建立方法,掌握SQL语言中SELECT语句的主要应用,掌握SQL的插入、更新、删除操作命令的基本应用,了解SQL定义数据表的基本方法,理解Access选择查询的意义和类别,掌握一般选择查询的操作应用;
理解参数查询的意义,理解Access动作查询包含的查询类别,将动作查询与SQL命令进行对比,理解并掌握动作查询的操作应用。
操作过程十分痛苦,总是运行不了,于是一遍又一遍的尝试,最后终于运行了,我也差不多快疯了,后来掌握了技巧就比较好运行了,不过操作过程中仍遇到不少阻碍,但我认为这是很好考验耐心的机会。
六、教师评语
1.按时完成实验;
2.实验内容和过程记录完整;
3.回答问题完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求。
签名:
日期:
2009.5
成绩