《数据库及其应用》实验报告2.docx

上传人:b****4 文档编号:3999290 上传时间:2022-11-27 格式:DOCX 页数:17 大小:361.13KB
下载 相关 举报
《数据库及其应用》实验报告2.docx_第1页
第1页 / 共17页
《数据库及其应用》实验报告2.docx_第2页
第2页 / 共17页
《数据库及其应用》实验报告2.docx_第3页
第3页 / 共17页
《数据库及其应用》实验报告2.docx_第4页
第4页 / 共17页
《数据库及其应用》实验报告2.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《数据库及其应用》实验报告2.docx

《《数据库及其应用》实验报告2.docx》由会员分享,可在线阅读,更多相关《《数据库及其应用》实验报告2.docx(17页珍藏版)》请在冰豆网上搜索。

《数据库及其应用》实验报告2.docx

《数据库及其应用》实验报告2

《数据库及其应用》实验报告

实验序号:

B0901000-34实验项目名称:

SQL查询、选择查询和动作查询

学  号

0906030155

姓  名

黄明均

专业、班

管科0901

实验地点

现教中心

指导教师

孙夫雄

时间

2010年4月

一、实验目的及要求

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-5.12^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视图中使用?

如何操作?

答:

在数据库窗口中双击“在设计视图中创建查询”或者单击”新建”按钮,然后再”新建查询”中设计视图中单击“确定”按钮;

在数据库窗口中选择“查询”对象,单击“新建”按钮,在“新建查询”对话框中选中“设计视图”并单击“确定”,关闭“显示表”对话框,单击查询工具栏的“视图”工具的下拉按钮,选择“SQL视图”选项;

2.为什么不能在数字常量前加“¥”或“$”符号表示币值常量?

“¥”或“$”有何作用?

答:

因为在“定义格式”已经输入相应的属性,只需输入数字常量后可自动显示。

作用:

可以在“格式”属性中的任何位置使用这些字符并且将这些字符原文照应。

3.如果在修改“法学院”学分的操作中要求根据“学院名”作为输入条件修改数据,查询命令应该如何写?

答:

UPDATE课程

WHERE学院名=“法学院”

4.不保存查询,与将查询保存为查询对象有何区别?

查询对象有什么作用?

答:

将查询保存为查询对象后,可以随时在数据库窗口中的查询对象界面选中双击,或者单击选中,然后单击“打开”按钮,运行查询并立即查看结果。

而不保存则不行。

作为查询对象,还可以作为其他数据库操作与表类似的数据源。

5.根据以下给定的查询要求,写出对应的查询命令。

①查询学生中的民族来源,显示不重复的民族数据。

SELECTDISTINCT民族FROM学生

②查询各民族男生和女生的人数。

SELECTCOUNT(男),COUNT(女)

FROM学生

GROUPBY民族

③查询没有学生选修的课程信息以及开课的学院名。

SELECT课程.*,学院名

FROM课程INNERJOIN学院ON课程.学院号=学院.学院号

WHERE课程号NOTIN(SELECT课程号FROM成绩)

④插入几条教师记录。

VALUES(<表达式1>[,<字段2>=<表达式2>…]

⑤给“教授”职称的教师的基本工资增加10%。

UPDATE教师表

SET基本工资=基本工资(1+0.1)

WHERE职称=教授

⑥删除没有学生就读的专业数据。

WHERE专业号NOTIN(SELECT专业号FROM学生)

⑦删除教师表。

DELETEFROM教师表

6.深入体会交叉表查询的作用,简述交叉表查询的实质意义。

作为行标题的字段最多可以设置几个?

作为列标题和交叉值的字段最多可以设置几个?

答:

交叉表查询是一种特殊的汇总查询。

交叉表事实上反应的就是对两种实体及其联系的关系表示,转换为另一种二维表结构来显示;无限制;1个

7.参数查询的参数设置是否一定要通过菜单设置类型?

通过菜单设置的参数是否一定要出现在查询中?

答:

不一定,只是为了明确起见,Access在“查询”菜单中列出“参数查询”菜单,当用户设计查询需要使用参数时,可以启动该菜单先定义参数名及其类型,这样可以减少使用参数出错的情况。

不一定,只是无论是否在查询中用的定义的参数,在运行查询时,Access会先要求你输入这里定义的所有参数的值,并自动按照定义的类型检验输入数据是否合乎要求,然后再执行查询。

8.生成表查询实现的是SQL语言中什么语句的功能?

答:

生成表查询实现的是SQL语言中SELECT语句(中INTO子句)的功能。

9.追加查询对应SQL的什么语句?

该语句是否只具有追加查询的功能?

若有其他功能,如何实现交互操作?

答:

追加查询对应SQL的INSERT语句;不是;INSERT语句有两种语法,一种是将一条记录追加到表中,另外一种是将一个查询的结果追加到表中。

第一种语法的实现可以在表的数据表视图中完成,第二种用法的实现就是通过“追加查询”。

五、分析讨论

(根据实验写出一些心得或分析等)

通过本次实验,对Select语句有了一定的了解,并且觉得这些语法很难记明白,所以在做实验时操作也不太熟练,在回答问题时,也遇到了很多疑问,所以对于这一章的内容要多熟悉、多复习,要对SQL语言有一个初步的了解及能够完成简单的应用。

六、教师评语

签名:

日期:

成绩

(一)SQL视图中表达式练习

1.进入SQL视图及在不同视图间切换

在Access中进入查询的设计视图并在查询的不同视图之间切换。

在Access中打开教学管理数据库。

在数据库窗口中选择“查询”对象,双击“在设计视图中创建查询”,弹出查询设计窗口及“显示表”对话框。

关闭“显示表”对话框,然后单击查询工具栏的“视图”工具的下拉按钮,选择“SQL视图”选项,如图:

不同视图间的切换就可通过这个工具栏按钮进行选择切换。

 

2.不同类型数据的表达式运算

在SQL视图中分别输入以下命令并运行,对于参数自己输入数据。

查看并写出各表达式运算结果。

SELECT-5.12^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.创建“教师”表,包括:

工号、姓名、性别、生日、职称、基本工资、学院号。

写出创建命令。

CREATETABLE教师

(工号TEXT(6)PRIMARYKEY,

姓名TEXT(10)NOTNULL,

性别TEXT

(2),

生日DATE,

职称TEXT(8),

基本工资MONEY,

学院号TEXT

(2)REFERENCES学院(学院号));

 

(三)选择查询操作

1.进入查询设计视图进行交互式选择查询设置

启动教学管理数据库。

1查询“专业”表,显示开设的所有专业涉及的学科门类。

将“专业”表加入设计视图。

在QBE界面中“字段”栏选择“专业类别”字段显示。

因为该字段的值有重复,因此,在设计视图的空白处单击右键,从弹出的快捷菜单中选择“属性”命令,打开“属性”对话框,选择“唯一值”属性值“是”。

2查询各专业学生的人数。

将“专业”表和“学生”表加入设计视图。

在QBE界面中“字段”栏中选中“专业号”和“专业”字段显示,然后单击工具栏中的“总计”按钮,在QBE中增加“总计”栏。

将“专业号”和“专业”设置为“分组”,然后选择“学生”表的“学号”字段,设置为“计数”,最后在学号前加上“人数”,作为查询后的列名。

③查询没有选课的男学生学号、姓名,即成绩表中没有记录的学生数据。

 

2.进行交叉表查询

将学生的“学号”和“姓名”作为行标题,“课程名”作为列标题,成绩作为交叉数据,生成交叉表。

 

3.进行参数查询

通过参数查询指定日期以后出生的某个民族的学生信息。

启动选择查询设计窗口,将“学生”表加入设计窗口,在QBE窗口中选择“*”表示输出学生表所有字段。

然后选中“生日”字段,去掉“显示”行的复选框,在条件行输入>[SR];按同样方式设置“民族”字段。

然后选择“查询”——“参数”命令,弹出“查询参数”对话框,分别设置SR和MZ的类型,单击“确定”按钮,设置完毕。

 

(四)动作查询操作

1.生成表查询操作练习

将“查询平均成绩在80分以上的各位学生的学号、姓名和平均分”的结果生成新表,表名“优秀学生名单”。

输入SQL命令后,选择“查询”——“生成表”查询,弹出“生成表”对话框,输入表的名称,然后单击“确定”按钮。

 

2.删除查询操作

删除“优秀学生名单”表中,平均分在85分以下的记录。

进入设计视图,加入“优秀学生名单”表。

选择“查询”——“删除查询”命令,这时窗口改为“删除查询”,QBE栏目发生变化,出现“删除”栏,调整或撤销其他栏。

在“字段”栏中选择“平均分”,这时删除栏值默认为Where。

在“条件”栏输入<85。

单击工具栏中的“运行”按钮运行,将删除数据。

如果选择“查询”——“删除查询”命令后,不进行条件设置而直接运行,即为无条件删除,将删除表中所有记录。

3.追加查询操作

将平均分在80~85分之间的学生及成绩数据加入“优秀学生名单”表,

(1)启动设计视图,添加“学生”和“成绩”表。

(2)在“字段”栏设置“学号”、“姓名”和“成绩”字段。

单击工具栏中的“总计”按钮,增加“总计”栏。

设置“学号”和“姓名”为“分组”字段,“成绩”字段为“平均值”

字段。

在“条件”栏中输入>=80and<85。

(3)选择“查询”——“追加查询”命令,打开“追加”对话框。

选择“优秀学生名单”表,单击“确定”按钮。

 

(4)QBE窗口中增加“追加到”栏,选择“学号”、“姓名”和“平均分”字段,设计完成。

运行查询,数据被追加到“优秀学生名单”表中。

4.更新查询操作

将没有学生选修的课程的学分减少1分。

(1)启动设计视图,添加“课程”表。

选择“查询”——“更新查询”命令,设计视图变为“更新查询”,QBE窗格中增加“更新到”栏。

选中“学分”字段,然后在“更新到”栏中输入“课程.学分—1”。

选中“课程号”字段,在“条件”栏中输入“NOTIN(SELECT课程号FROM成绩)”,设计完成。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1