《数据库及其应用》实验报告2.docx
- 文档编号:3420215
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:24
- 大小:992.98KB
《数据库及其应用》实验报告2.docx
《《数据库及其应用》实验报告2.docx》由会员分享,可在线阅读,更多相关《《数据库及其应用》实验报告2.docx(24页珍藏版)》请在冰豆网上搜索。
《数据库及其应用》实验报告2
《数据库及其应用》实验报告二
实验序号:
B0901000-03实验项目名称:
SQL查询、选择查询和动作查询
学 号
姓 名
专业、班
实验地点
指导教师
时间
一、实验目的及要求
1.掌握Access表达式的基本概念。
了解不同类型数据的常量、参数、运算与函数的使用。
2.理解查询对象的意义和建立方法。
3.掌握SQL语言中SELECT语句的主要应用。
4.掌握SQL的插入、更新、删除操作命令的基本应用。
5.了解SQL定义数据表的基本方法。
6.理解Access选择查询的意义和类别。
7.掌握一般选择查询的操作应用;理解并掌握交叉查询的应用;理解参数查询的意义。
8.理解Access动作查询包含的查询类别。
9.将动作查询与SQL命令进行对比,理解并掌握动作查询的操作应用。
二、实验设备(环境)及要求
PC机,WindowsXP,Access2003,学生管理数据库
三、实验内容要求
(一)SQL视图中表达式练习
1.进入SQL视图及在不同视图间切换
在Access中进入查询的设计视图并在查询的不同视图之间切换。
2.不同类型数据的表达式运算
在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。
查看并写出各表达式运算结果。
SELECT^2+(17mod3);
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((学院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课程.课程号,课程名
ORDERBYCOUNT(*)DESC;
2.练习SQL的插入、更新、删除操作命令
①在课程表中插入一门新课,数据如命令所示。
INSERTINTO课程
VALUES("06020101","会计学原理",3,"06");
②将“法学院(04)”开设课程的学分增加1分。
UPDATE课程
SET学分=学分+1
WHERE学院号="04"
③删除“信息学院(09)”开设的没有学生选修的课程。
DELETEFROM课程
WHERE学院号="09"AND课程号NOTIN(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.实验报告的撰写认真、格式符合要求,没有抄袭行为。
签名:
日期:
成绩
本实验的操作步骤如下:
(一)
SQL视图中表达式练习:
1.进入SQL视图及在不同视图间切换
如上图可知:
要在设计视图,SQL视图,以及显示查询结果的数据表视图之间进行切换,以便查看可视化设计、SQL命令以及查询数据时,就通过这个工具栏按钮进行选择切换。
2.不同类型数据的表达式运算
SELECT^2+(17mod3)
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语句
①查询“学院”、“专业”、“学生”完整数据
②查询“工商管理”专业所有女生信息
③查询平均成绩在80分以上的各位学生的学号、姓名和平均分。
保存为查询对象,对象名“优秀学生”
④查询没有学生数据的专业编号和专业
⑤查询“湖北”籍1988年以后出生的学生信息
⑥查询选课人数最多的课程的课程号、课程名
2.练习SQL的插入、更新、删除操作命令
1在课程表中插入一门新课
②将“法学院(04)”开设课程的学分增加1分
③删除“信息学院(09)”开设的没有学生选修的课程
3.创建“教师”表,包括:
工号、姓名、性别、生日、职称、基本工资、学院号。
创建命令如下:
CREATETABLE教师
(工号TEXT(6)PRIMARYKEY,
姓名TEXT(10)NOTNULL,
性别TEXT
(2),
生日DATE,
职称TEXT(8),
基本工资MONEY,
学院号TEXT
(2)REFERENCE学院(学院号));
(三)选择查询操作
1.进入查询设计视图进行交互式选择查询设置
①查询“专业”表,显示开设的所有专业涉及的学科门类
步骤:
将“专业”表加入设计视图,在QBE界面中“字段”“栏选择”“专业类别”字段显示,因为字段的值有重复,因此,在设计视图的空白处单击右键,从弹出的快捷菜单中选择“属性”命令,打开属性对话框,选择“唯一值”“属性值”“是”
②查询各专业学生的人数
步骤:
将“专业”表和“学生”表加入设计视图,在QBE界面中“字段”栏选中“专业号”和“专业”字段显示,然后单击工具栏中的“总计”按钮,在QBE中增加“总计”栏,将“专业号”和“专业”字段设置为’分组‘,然后选择’学生”表的”学号”字段,设置其为”计数”,最后再学号前面加上”人数”,作为查询的列名,设计完成,运行即可。
③查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据
步骤:
将“学生”表加入设计视图,选择“学号”“姓名”字段显示,在第三列处输入“注:
‘尚未选课’”,选中“显示”复选框,然后再第四列中选择“学号”但不显示,只是作为比较的对象,在“条件”栏中输入一个子查询“NotIn(SELECT学号FROM成绩)”,设置完毕后运行即可。
2.进行交叉表查询
将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表
步骤:
启动选择查询设计窗口,讲学生成绩和课程表加入设计窗口,选择查询,交叉表查询命令,在QBE窗格中选择学生表的学号,姓名作为行标题,课程名作为列标题,成绩总计后作为值,这样交叉表设计完毕,运行即可看到交叉表查询的效果。
3.进行参数查询
通过参数查询指定日期以后出生的某个民族的学生信息
步骤:
启动选择查询设计窗口,将“学生”表加入设计窗口,在QBE窗口中选择“*”表示输出学生表所有字段,然后选中“生日”字段,去掉“显示”行的复选框,在条件行输入>[SR];按同样方式设置“民族”字段。
(四)动作查询操作
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语句,可以在SQL视图中使用;操作方法:
只要编写的SQL语句都是在英文状态下输入的,只需将其复制粘贴到SQL视图中运行即可。
2.因为数据库表中有固定的货币型设计,限制了是货币型的时候,只需输入相应的数据即可;“¥”或“$”是当限制位数字型的时候,就能够表示输入的数据是货币型。
3.查询命令:
UPDATE课程
SET学分=学分+1
WHERE学院名="法学院"
4.不保存查询,下次打开查询的时候就没有查询的记录,保存的话下次打开查询的时候就看得到查询,方便查看操作过的内容;查询对象的作用:
下次操作的时候可以直接运行查询进行其他的操作。
5.①SELECT学生.民族
FROM学生
WHERE(((学生.民族)="不重复的民族"));
②SELECT学生.民族,Count(学生.性别)AS人数
FROM学生
GROUPBY学生.民族
HAVING(((Count(学生.性别))="男"and(Count(学生.性别))="女"));
③SELECT课程.课程号,课程.课程名,课程.学分,学院.学院名,课程.课程号,课程.课程名,课程.学分,"没有学生选修"AS注,学院.学院名
FROM学院INNERJOIN课程ON学院.学院号=课程.学院号;
④INSERT教师
VALUES(*)
⑤UPDATE教师
SET基本工资=基本工资+基本工资*10%
WHERE职称=”教授”
⑥DELETEFROM专业
WHERE专业号NotIn(Select学号
⑦
6.交叉表查询的作用是进行一种特殊的汇总查询,作为行标题的字段最多可以设置2个,作为列标题和交叉值的字段最多可以设置1个。
7.参数查询的参数设置一定要通过菜单设置类型;通过菜单设置的参数不一定要出现在查询中。
8.生成表查询实现的是SQL语言中SELECT语句中INTO子句的功能。
9.追加查询对应SQL的INSERT语句;该语句并不只是具有追加查询的功能。
五、分析讨论
在实验的过程中主要遇到的问题就是在access中制作表的时候输入数据总是出现问题,比如说是在表中无法输入数据,或者是关系图中的对应关系始终不正确。
不过还是明白了access中数据库的重要性。
毕竟通过了老师的讲解跟指示还是搞懂了问题出现的原因,多学会了一种office的操作方法。
有些较为复杂的SQL语句不是很会写,不过能够在多种视图的切换下得到相应的答案,有时候又是要在书本的辅助下才能完成相应语句的书写。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库及其应用 数据库 及其 应用 实验 报告