数据库实验书
重庆邮电学院经济管理学院 上 机 实 验 指 导 书 系 列 数据库系统应用 胡大权 编写 计算机信息管理实验中心 二〇〇九年三月
《数据库系统应用》上机实验指导书-I-前 前 言 《数据库系统应用》是非计算机类专业的一门基础课,在理论教学中,多数侧重于理论讲解,轻实践操作,鉴于此,特编写本书用于上机实验指导。选用 Access 作为软件平台是因为 Access 基本上能体现数据库的所有理论知识,而且,目前单位企业日常办公中广泛使用 Access。本书结合数据库理论教学内容以一个数据库应用系统设计和完善贯穿全书,内容精简实用,语言简练,条理清晰,操作性强。
由于编者水平和篇幅有限,虽几经修订改编,书中难免会有欠妥之处,恳请读者批评指正。
编者 2009 年 3 月
《数据库系统应用》上机实验指导书-II-目 目 录 前 言.....................................................................................................................I 目 录...................................................................................................................II 实验一 数据库设计..............................................................................................1 实验二 创建数据库..............................................................................................5 实验三 表及数据操作........................................................................................12 实验四 查询设计................................................................................................21 实验五 复杂查询................................................................................................26 实验六 SQL 语句练习......................................................................................31 实验六 窗体........................................................................................................37 实验七 报表........................................................................................................43 实验八 宏............................................................................................................48 实验九 VBA(选做)......................................................................................53 实验十 数据库安全(选做)..........................................................................54 实验十一 综合实验............................................................................................55
《数据库系统应用》上机实验指导书-1-实验一 数据库设计 实验目的 1、掌握数据库设计的方法和步骤 实验内容 1、分析超市管理系统数据库; 2、进行概念结构设计,并画出 E-R 图; 3、进行逻辑结构设计,将 E-R 图转换为关系模型; 4、设计各关系中的属性 实验步骤 1 需求分析 数据库需求分析是整个设计过程的基础,在分析阶段,设计者通过调查、询问等方法了解业务流程、用户的实际要求,与用户达成共识;了解用户能提供哪些数据,要实现哪些功能,并以数据流图、数据字典描述出来,这需要用户密切配合合作。
本实验假设性分析超市管理系统的主要功能为:根据收银台终端传送来的销售数据和库存数据进行分析以掌握销售情况、库存情况,为管理者提供决策依据。如图表 1 高层业务流程图 图表 1 高层业务流程图 2 概念结构设计。
超市管理系统主要是对柜台的销售数据和库存商品分析、统计,以掌握销售情况,为管理者提供决策依据。本系统是为便于教学而从现实中抽象简进货管理 销售分析 用户 数据库 超市管理系统
《数据库系统应用》上机实验指导书-2-化的,省略了需求分析的详细过程,直接给出了 E-R 图,如图表 2。
图表 2E-R 图 3 逻辑结构设计 将概念结构设计的 E-R 图转换为 DBMS 产品(即 Access)所支持的逻辑结构。Access 支持关系模型,因此,要将上面 E-R 图转换为关系模型。加下划线的为主键。
销售员(销售员 ID,姓名,性别,职务,地址,城市,邮政编码,家庭电话,出生日期,雇佣日期,照片,备注)供应商(供应商 ID,公司名称,联系人姓名,联系人职务,地址,城市,邮编,电话,传真)类别(类别 ID,类别名称,说明,图片)商品(商品 ID,商品名称,供应商 ID,类别 ID,单位数量,单价,库存量,警戒库存量)售货单(售货单 ID,销售员 ID,日期)售货单明细(售货单 ID,商品 ID,单价,数量,折扣)根据实际情况分别确定以上关系中各个属性(字段)的数据类型、值域范围以及关键字、约束等。下面给出了在 Access 中各表的字段属性,仅供参考。
售货单 售货单明细 组成 商品 参照销售员 参照供货商 供应 1 n n 1 1 n 1 n 类别 属于 n 1
《数据库系统应用》上机实验指导书-3-表格 1 销售员表 字段名 字段类型 字段宽度 小数位数 索引 说明 销售员 ID 自动编号 长整型 主键 销售员唯一编号 姓名 文本 10 性别 文本 1 职务 文本 30 地址 文本 50 城市 文本 10 邮政编码 文本 6 家庭电话 文本 20 出生日期 日期/时间 雇佣日期 日期/时间 照片 文本 存放照片文件名 备注 备注 表格 2 供应商表 字段名 字段类型 字段宽度 小数位数 索引 说明 供应商 ID 自动编号 长整型 主键 供应商唯一编号 公司名称 文本 50 联系人姓名 文本 10 联系人职务 文本 10 地址 文本 50 城市 文本 10 邮编 文本 6 电话 文本 15 传真 文本 15
《数据库系统应用》上机实验指导书-4-表格 3 类别表 字段名 字段类型 字段大小 小数位数 索引 说明 类别 ID 自动编号 长整型 主键 类别唯一编号 类别名称 文本 30 说明 备注 图片 OLE 对象 存放类别的图片 表格 4 商品表 字段名 字段类型 字段大小 小数位数 索引 说明 商品 ID 自动编号 主键 商 品 唯 一 编号 商品名称 文本 40 供应商 ID 数字/长整型 外键 同供应商表 类别 ID 数字/长整型 外键 同类别表 单位数量 文本 20 单价 货币 库存量 数字/整型 警戒库存量 数字/整型 表格 5 售货单表 字段名 字段类型 字段大小 小数位数 索引 说明 售货单 ID 自动编号 主键 售 货 单 唯 一编号 销售员 ID 数字/长整型 外键 同销售员表 日期 日期/时间 表格 6 售货单明细表 字段名 字段类型 字段大小 小数位数 索引 说明 售货单 ID 数字 主键 一 张 销 售 单中 有 多 种 商品 商品 ID 数字/长整型 单价 货币 数量 数字/整型 折扣 数字/单精度型
《数据库系统应用》上机实验指导书-5-实验二 创建数据库 实验目的 1、熟悉 Access 的界面和主要功能 2、掌握在 Access 中创建数据库、表的方法 实验内容 1、分析超市管理系统数据库; 2、进行概念结构设计,并画出 E-R 图; 3、进行逻辑结构设计,将 E-R 图转换为关系模型; 4、设计各关系中的属性 实验步骤 1 启动 Access 目前 Access 主要有 2000,2002 即 XP,2003,2007 四种版本,这几种版本的主要功能一样,本实验指导书是用 Access 2003 在 Windows XP 系统中进行演示讲解的,对于其他版本的 Access 和操作系统,操作方法类似。
方法一 菜单启动:点击“开始”菜单,在“所有程序”中找到“Microsoft Office”,“Microsoft Access 2003”就在“Microsoft Office”菜单下。
简洁的描述方式为:开始→所有程序→Microsoft Office→Microsoft Access 2003,本书为了叙述简洁明了,凡多重菜单,均使用此描述方式。例如,在 Windows 98 下打开 Access 2000 的步骤为:开始→程序→Microsoft Access 2000。
点击“Microsoft Access 2003”菜单项,即可启动 Access。
方法二 桌面快捷方式启动:在桌面上找到 图标,双击这个图标,即可启动 Access。如果桌面上还没有创建此快捷方式,必须先创建该快捷方式。
方法三 直接在 Access 的安装目录下启动:找到并打开 Access 的安装目录,双击 MSACCESS.exe 文件。
ACCESS 启动后如图所示
《数据库系统应用》上机实验指导书-6-图表 3:ACCESS 主界面 2 新建空白数据库 菜单方式:文件→新建 工具栏方式:点击工具栏左上角的 按钮 任务窗口方式:点击“开始工作”任务窗口中下方的“新建文件” 使用上面三种方式中任何一种,任务窗口就变成如下“新建文件”窗口。
图表 4:新建文件窗口 菜单栏 工具栏 工作区 状态栏 任务窗口
《数据库系统应用》上机实验指导书-7-点击“空数据库”,出现如下图所示对话框,选择保存数据库的位置,默认是“我的文档”,在文件名地方输入空数据库的名称,如“超市管理系统”,点击“创建”按钮,空白数据库就创建了。
图表 5:创建数据库对话框 空白数据库创建后如下图所示,Access 数据库包括表、查询、窗体、报表、宏等对象,注意:这些对象全部保存在数据库文件中,而不是分别保存在不同的文件中。Access 数据库扩展名为 MDB,数据库的文件信息可以从“文件”→“属性”知道,如文件名、位置、大小等。
1 选择保存数据库的位置 2 输入数据库的文件名 3 创建数据库
《数据库系统应用》上机实验指导书-8-图表 6:新建的数据库 3 创建表 表是数据库中实际保存数据库的地方。如上图所示,可用多种方法创建,通常使用的是第一种“使用设计器创建表”,点击“设计”按钮或双击“使用设计器创建表”,出现表设计器窗口,按照实验一所设计的各表的字段属性,分别输入字段名称、数据类型、字段大小,本次实验只要求设置这三项,说明是对字段的一个注解,是一个可选部分,下图演示了“销售员表”的创建。
选择“销售员 ID”,点击工具栏中的 按钮,或者用鼠标右击“销售员ID”所在的行,在弹出菜单中点击“主键”菜单,即可将“销售员 ID”字段设置为主键。
关闭表设计器,系统提示输入表的名称,输入“销售员”,点击“确定”按钮,“销售员”表创建完毕。
《数据库系统应用》上机实验指导书-9-图表 7:表设计器 同样的方法,再将实验一所设计的其他表在 Access 中创建。创建完后如图所示。
《数据库系统应用》上机实验指导书-10-图表 8:创建完的表 现在,双击某个表,进入“数据表视图”,就可以给表输入一些数据。
4 表的其他创建方法 在“表”对象中,还有两种创建表的方法:“使用向导创建表”和“通过输入数据创建表”。
“使用向导创建表”是通过向导一步步的引导,从系统自带的示例表中选择一些字段以组成符合自己需要的表。
“通过输入数据创建表”是通过向数据表视图中输入一些数据(一条一条的记录),系统自动识别每个字段中的数据类型、大小以确定表的结构。
这两种方法就非常简单,也减少一些工作量,但系统自动创建的表的字段属性往往不符合我们的需求,有可能字段的数据类型不合适,也有可能字段的大小不合适,这还需要结合表设计器进行修改完善。
5 数据库及 s Access 的关闭 如上图所示,关闭数据库窗口就关闭了当前数据库,可再打开其他数据库。如果不再使用 Access,可以关闭 Access 窗口,同时也就关闭了当前数据1 双 击某 个表,输入数据 2 关 闭当 前数据库 3 关闭 Access
《数据库系统应用》上机实验指导书-11-库。
实验任务 1. 将实验一设计的所有的表在 Access 中创建 实验报告 总结数据库设计的具体步骤 依照实验一中的内容,自己设计一个学生成绩管理系统或运动会赛事管理系统(体育专业),先进行相应的需求分析,画出对应得 E-R 图,并将给出的 E-R 图转换为关系模型,给出详细的表结构(包括表及每个表中需要的字段的详细信息) 写出实验二中建立数据库及表的过程 写出实验过程中遇到的问题及心得体会
《数据库系统应用》上机实验指导书-12-实验三 表及数据操作 实验目的 1、进一步学习表设计器 2、掌握表关系的建立和编辑 3、掌握在表中数据的各种操作方法 4、了解数据及数据表视图格式设置 5、掌握数据的导入、导出和链接 实验内容 1、修改完善超市管理系统数据库中的表结构及属性; 2、建立和编辑表之间的关系 3、进行记录的添加、修改、删除、复制等操作; 4、进行数据的选择、删除、剪切、复制、粘贴等操作; 5、设置数据表视图的行高、列宽、字体、字号,单元格效果等格式 6、删除、冻结、隐藏列 7、数据的查找、替换、排序 8、练习数据导入、导出和链接 实验步骤 1 表字段属性的修改 在上一次实验中创建表时,我们只简单的设计了字段的字段名称、数据类型和字段大小三个主要部分。但在字段属性中,还有很多的内容。对于不同的数据类型,“常规”标签里会显示不同的属性,常用的有:格式,输入掩码,标题,默认值,有效性规则,有效性文本,必填字段,索引,输入法模式等。各属性的功能和意义如下:
格式:数据显示格式,比如:时间类型的字段,显示为长时间还是短时间,是中国习惯的“年月日”还是英美国家习惯的“月日年”等 输入掩码:限制数据输入的模式 标题:在窗体中显示的名称,如果为空,则显示字段名,通常用于给用户友好的界面显示 默认值:在添加新记录时,系统自动赋的值
《数据库系统应用》上机实验指导书-13-有效性规则:用于限制输入的逻辑表达式,返回值为真才接受 有效性文本:当违反有效性规则时系统提示给用户的信息 必填字段:如果该值为真,该字段必填,不能为空 索引:用于加快查找的速度和性能 输入法模式:当输入该字段时是否需要输入法以及何种输入法 举例 销售员表中出生日期的属性如下图:
图表 9:出生日期属性设置 从上面表中可以看出,销售员的出生日期字段输入格式按中国人熟悉的”年-月-日”格式,销售员的出生日期不能晚于当前日期(当天的日期),如果输入的日期比当前日期还晚,则不能输入,系统显示提示信息:“出生日期不能是将来” 在表设计器的字段属性中,“查阅”功能也特别有用,比如销售单表中的“销售员 ID”和销售员表中的“销售员 ID”相同,在原始的输入方式中,在输入“销售员 ID”时,输入的是一个个数字,很容易搞错,如左图,实际我们是要确定该销售单是哪个销售员销售的,而销售单中的“销售员 ID”的值只能输入销售员表中已经存在的“销售员 ID”;如果在输入“销售员 ID”时能根据销售员“姓名”确定就好了,如右图,直接点击输入框右边的下拉箭头,选择“销售员”,虽然看似选择的是销售员姓名,但实际输入的是“销售员 ID”。这就是“查阅”的功能,也即“参照完整性”。
图表 10:原始的数据输入方式和改进后的数据输入方式
《数据库系统应用》上机实验指导书-14-方法一、首先将“销售员 ID”的标题设置为“销售员”,再将查阅属性作如下图设置即可。
方法二、在数据类型的下拉列表中选择“查阅向导”,让向导自动完成对查阅属性的设置。(这种方式必须是在两表之间未建关系之前做,建立关系后不能用此种方法)图表 11:“销售员 ID”字段查阅属性的设置(方法一)说明:绑定列:表示以查询结果的第几列作为返回给组合框的值用来为本字段输入内容;e.g.值为 1 表示将查询结果的第 1 列即“销售员 ID”的值返回作为本字段的输入内容 列数:表示在组合框中表示待显示的列数,即显示的查询结果的列数;e.g.值为 2 表示在组合框中显示查询结果的前两列。
列宽:用于设置每列的显示宽度,每列之间以分号分隔;例如:0cm;2cm分别表示第一列和第二列在组合框中的显示宽度,第 1 列显示宽度为 0cm,表示在组合框中不显示第 1 列的内容,也就是上图中改进后输入效果。
(可以自己修改该项设置,分别设置列宽为 0 及 1,比较两种情况下展开组合框的显示区别)如果某字段的取值只是固定的有限几个不同取值,如:性别字段的“男”、“女”,学历字段的“专科”、“本科”、“硕士”等;可以进行字段查阅属性的设置,“显示控件”设为“列表框”,“行来源类型”可以设置为“值列表”,行来源中应输入所有可能的值,并以英文的分号隔开,如:销售员的性别采用值列表,行来源里应输入:
"男";"女"※注意:这里的双引号和分号均为英文标点符号,不能用中文标点符号,系统会将中文标点符号等同于中文汉字对待,今后凡是在表达式中都只能用英文标点符号 2 2 建立和编辑表之间的关系 表之间的关系就是表的外键与其他表的主键之间的关系,建立关系的方
《数据库系统应用》上机实验指导书-15-法如下:选择“工具”→“关系”或点击工具栏中的 按钮,出现如图所示关系窗口。
图表 12:关系窗口 然后,选择“关系”“显示表”,或在关系窗口中点击鼠标右键,在弹出菜单中选择“显示表”,如图。
图表 13:显示表窗口 将需要建立关系的表添加进去,如:“供应商”表和“商品”表,然后用鼠标拖动联系两个表的字段中主键字段例如:“供应商”表中的“供应商ID”字段到对应的外键字段:“商品”表中的“供应商 ID”字段上,当鼠标变成一个长方条时,松开鼠标,这时出现如图所示“编辑关系”对话框。
《数据库系统应用》上机实验指导书-16-图表 14:编辑关系对话框 如果要使有关系的表之间数据统一,应该” 设置“实施参照完整性”,(例如:
若未实施参照完整性,当在输入商品信息时,如果输入的供应商 ID 是一个在供应商表中不存在的值,系统不会提出反对意见,会允许输入,但若实施了参照完整性,遇到这种供应商不存在的情况,系统会给出相关提示信息,并且不允许输入)级联更新相关字段 当主表的主键值更改时,自动更新相关表中的对应数值; 级联删除相关字段 当删除主表中的记录时,自动删除相关表中的有关记录(例如:当删除供应商表某一供应商时,会自动同时删除掉商品表中由此供应商提供的所有商品)。
设置完后,点击“确定”按钮,完成关系的创建。按照同样的方法,我们可以依次建立其他的几个关系。如图,显示了“超市管理系统”中所有关系,建立了关系的表之间有一条连线连接起来,并指向相应字段。
图表 15:表之间的关系
《数据库系统应用》上机实验指导书-17-关闭“关系”窗口,保存关系布局。
当需要修改关系时,可重新打开“关系”窗口,用鼠标双击或右击需要修改关系连线进行修改或删除(在表设计过程中如果进行了“字段查阅”属性的设置,则会自动建立对应的表的关系,可以修改此关系,设置其“实施参照完整性”)。
7 数据的导入、导出和链接 导入是一种将数据从其他 Access 文件复制 Microsoft Access 中或将数据从不同格式转换并复制到 Microsoft Access 中的方法。该方法可以利用已有的数据,减少数据录入工作量。“文件”→“获取外部数据”→“导入”; 导出是一种将数据和数据库对象输出到其他数据库、电子表格或文件格式中,以便其他数据库、应用程序或程序可以使用该数据或数据库对象的方法。如:导出到 Word、Excel 对数据进一步处理。“文件”→“导出”; 导出在功能上与复制和粘贴相似。
链接是一种连接到其他应用程序中的数据但不将数据导入的方法,这样在原始应用程序和 Access 文件中都可以查看并编辑这些数据。
导入、导出和链接功能可以通过“文件”菜单或数据库窗口的弹出菜单中相关菜单项操作。
4 4 记录的操作 添加新记录 打开表,将光标置于最后一行有“*”的记录内,输入一条记录即可,也可以直接在任一条记录前点击鼠标右键,在弹出菜单中选择“新记录”,光标就自动移到输入新记录的位置。
修改记录 先定位于要删除的记录,直接移到要修改的字段进行修改即可。
删除记录 录 先定位于要删除的记录,可以在上面所述的弹出菜单中选择删除记录即可,也可以用“编辑”→“删除记录”。在删除记录时有一对话框提示,以防误操作。
复制记录 和上面的操作类似,需要说明的是,可以在表内、表之间以及向 Word、Excel 等复制,在表内复制要注意记录的唯一性,在表之间复制要注意表的字段顺序、类型、大小要一致,至少要兼容。
5 5 数据的选择、删除、剪切、复制、粘贴等操作 这些操作和 Word,记事本等文字操作一样,不再赘述。
《数据库系统应用》上机实验指导书-18-6 6 设置数据表视图的行高、列宽、字体、字号、单元格效果等格式,删除、冻结、隐藏列 A.这些设置可以在“格式”菜单中找到,也可以在“数据表视图”的标题栏或相应的列上的弹出菜单中找到。非精确的行高、列宽可直接通过鼠标拖动行列之间的缝隙调整。删除列就删除相应的字段 B.冻结列用于当表的字段太多,在一个显示屏显示不完,需要拖动滚动条显示时,容易记录错位,通过将关键的一列固定,来解决记录错位问题。
C.当某些列暂时不使用并影响记录定位等情况下使用隐藏列将这些列隐藏起来。
相对应有“取消隐藏列”、“取消冻结列”。
7 7 数据的查找、替换、排序、筛选 当表中有成千上万条记录时,查找某条记录或将某些内容替换修改,就要使用“查找和替换”工具。可以在“编辑菜单”和相应的弹出菜单中找到该菜单,也可用工具栏中的 按钮。点击“查找”后出现如下对话框,可以在指定的字段内,也可在整个表中进行查找和替换。替换时,还需在替换框中输入替换的内容。
图表 16:查找替换 排序是将表中的记录按选定的列以升序或降序排列,先选定排序的列,可以直接点击工具栏里的 按钮,也可通过“记录”→“排序”或相应的弹出菜单来排序。
筛选是按给定的条件从记录中筛选出符合条件的记录,可以直接点击工
《数据库系统应用》上机实验指导书-19-具栏里的 按钮,也可通过“记录”→“筛选”或相应的弹出菜单来筛选。
实验任务 :
1.从 172.22.104.2 上下载超市管理数据库(其中不包括销售明细表;)2.根据字段含义,修改完善各字段的属性:
将商品表中的警戒库存量字段默认值设为:10; A.雇员的雇佣日期不能晚于当前日期,违反时给出相应提示:“雇佣日期晚于了当前日期”; B.输入雇员性别字段时,直接选则男和女(值列表); C.设置销售员的姓名字段及供应商表的公司名称字段不允许为空 D.为商品表中的供应商 ID 字段、类别 ID 字段、售货单表中的销售员 ID 字段及售货单明细表中的商品 ID 字段设置其 查阅功能,使其在显示记录时,虽然各字段实际存放的是其 ID,但却能显示其对应的名称(例如:)销售员姓名、类别名称、供应商公司名称、商品名称而不是 ID。
3.练习导入、导出功能 A.从 172.22.104.2 上下载 excel 文件“售货单.xls”,将其中的数据导入到“超市管理系统.mdb”的对应表中。
B.从 172.22.104.2 上下载数据库文件 db1.mdb,将其中的售货单明细表导入到销售管理系统数据库中。
C.将”销售管理系统.mdb 中的商品表导出到 db1.mdb 数据库中,导出时表名称不变。
4.建立各表之间的关系,并且在各关系间实施参照完整性 5.在各表中进行数据操作:为各数据表输入相应的记录(在下载的数据库基础上,往系统中增加 2-3 条记录)6.添加、删除、冻结、隐藏列 A.在供应商表的视图中,在“联系人姓名”字段后添加新的一列,并将新添加的列的列名重新命名为“联系人性别”; B.将新添加的“联系人性别”字段删除 C.将销售员表中“姓名”字段冻结,比较冻结前后在显示的不同 7.*练习查找、替换、排序功能 A.对销售员表中的记录按姓名排序; B.将销售员表中城市字段中的“重庆”替换为“重庆直辖市”,《数据库系统应用》上机实验指导书-20-C.查找出商品表中商品名称为“***”的商品记录(自己确定具体商品名称)8.*对表中记录进行选择、剪切、复制、粘贴操作 分别选择系统中各原始表中的记录,将其进行复制并粘贴到任务 3中导入的对应空备份数据表中。
9.*设置数据表视图的格式 将数据表视图的所有行高设为 18;供应商表中的地址字段列宽设为 25;所有表视图中的字体设为:华文仿宋,字号设为:小四; 实验报告 写出实验过程中具体操作步骤 写清楚系统中各表之间的关系,及关系所代表的具体含义,以配对的形式写出关系中主键及外键所在的表及字段名称 写出实验过程中遇到的问题及心得体会
《数据库系统应用》上机实验指导书-21-实验四 查询设计 实验目的 1、掌握用向导设计查询 2、掌握用设计视图设计查询 实验内容 1、用向导设计查询 2、用设计视图设计简单查询、带条件的查询、对结果排序的查询 3、设计操作查询 实验步骤 1 使用向导设计查询 在数据库窗口的左边“对象”栏中选择“查询”,双击“使用查询向导创建查询”选项,出现如图所示向导窗口。选择相应的表和字段,按照向导的一步一步提示即可完成简单查询的创建。
图表 17:查询创建向导 2 使用设计视图创建查询 在数据库窗口中双击“在设计视图中创建查询”,出现如图所示:显示表和设计视图两个窗口。
《数据库系统应用》上机实验指导书-22-图表 18:显示表对话框 图表 19:查询设计视图 选择查询所涉及的表或查询,例如“销售员”表,点击“添加”按钮添加到查询设计视图中,关闭“显示表”对话框。设计视图中上部显示表和字段列表,下部为设计网格,用于设置查询字段及选项等。在“设计视图”字段列表中双击“*”,则在设计网格的字段中出现“销售员.*”,表示选择了表中所有字段,如果只需要其中的部分字段,则在相应字段名上双击,或用鼠标将字段名拖到下面的字段中即可。下图演示了查询“销售员”表中所有销售员的姓名。
《数据库系统应用》上机实验指导书-23-图表 20:添加表的查询设计视图 点击工具栏上的运行按钮 即可查看查询结果,如下图。如果查询以设计完毕,可关闭设计视图或查询结果窗口,此时系统提示是否保存查询以及保存的名称。
图表 21:查询结果 3 带条件和排序的查询 在上面设计视图中,在相应字段的“条件”中输入一个表达式,用来限制查询返回的结果集,例如:输入“赵军”,则结果集中只返回“赵军”这
《数据库系统应用》上机实验指导书-24-一条记录。表达式也可以“生成器”产生复杂的条件,也支持通配符“*”、“?”,其中“*”匹配任意多个的任意字符而“*”匹配单个任意字符。如“Like "张*"”表示返回所有姓张销售员姓名,而“Like "张?"”则返回所有姓张但姓名只有两个字的销售员姓名,如“张颖”、“张欢”。
在上面设计视图中,在相应字段的“排序”中选择“升序”或“降序”,则结果集就按该字段升序或降序排列。
4 操作查询 注意:以下操作查询执行后是不可撤销的,执行前要慎重考虑。
更新查询 将表中符合查询条件的记录的相应字段值批量更改为新的值,如所有商品的单价提高 0.5 元,先用设计视图设计好选择查询(默认),然后在“查询”菜单中或在工具栏的 按钮中选择“更新查询”,然后在设计视图的“单价”字段的“更新到”框中输入“[单价]+0.5”,如下图,点击工具栏运行按钮即可。如果要将单价提高 10%,则需在“更新到”框中输入“[单价]*(1+0.1)”。
图表 22:更新查询 删除查询 将表中符合查询条件的记录集批量删除,操作方法同更新查询类似。
生成表查询 将查询结果保存在表中,可以是新表,也可以是原有的表,可以是当前数据库的表,也可以是其他数据库的表,操作方法同更新查询类似,系统会提示选择或输入表的名称,运行后,查询结果才保存到表中。
追加查询 将符合查询条件的结果集追加到另一个表中,同生成表查询类似,要求被追加的表必须包含查询结果的相应字段。
实验任务 设计如下查询:
1.进货查询:查询出系统中哪些商品应该进货(库存量<戒库存量的商品)2.存货查询:查询系统中各商品的库存信息(商品名称、供应商 id、单价、数量)3.查询所有出生日期在 1965-1-1 到 1975-12-30 之间出生的销售员 4.查询所有姓张的销售员信息
《数据库系统应用》上机实验指导书-25-5.将商品表中库存量字段中的值批量更新,所有商品的库存量提高 10%(更新查询)6.将售货单明细表中售货单 ID 字段为“xxx”(xxx 为售货单表中存在的值)的记录集批量删除(删除查询)7.对商品表进行生成表查询,生成单价>=100 元的商品表,新产生的表名为:贵重商品(生成表查询)8.对商品表进行追加查询,将商品单价在 50<=单价<100 元范围内的商品信息追加到“贵重商品”表(追加查询)
《数据库系统应用》上机实验指导书-26-实验五 复杂查询 实验目的 1、掌握多表查询的设计 2、熟悉参数查询和统计查询设计 实验内容 1、创建多表查询 2、设计带参数的查询 3、创建统计查询 实验步骤 1 1 多表查询 打开查询设计视图,添加查询所依赖的表。如:要查询“佳佳乐”公司供应的商品,则要将“供应商”表和“商品”表添加到查询设计视图。添加查询结果所需的字段,如:将“公司名称”和“商品名称”作为查询结果字段。设置查询条件,如:在“公司名称”字段的“条件”中输入“佳佳乐”,如图。点击工具栏中的运行按钮即可看到查询结果。多于两个表的查询创建方法类似。
图表 23:多表查询设计
《数据库系统应用》上机实验指导书-27-2 2 设计带参数的查询 带参数的查询实际上就是条件查询,只不过参数查询的条件更灵活,每次运行查询时由用户动态输入参数来确定查询的条件。比如,上面设计的多表查询每次运行时都是查询的“佳佳乐”公司供应的商品,而如果我们将设计网格中“公司名称”字段的条件中输入“[输入要查询的公司名称:]”,则每次运行该查询时,先出现如图所示参数对话框(只要在 某字段的条件中输入“[] ”中括号就表示参数查询,中括号中间的文字表示输入提示,如图 22)。输入参数,点击“确定”按钮后,查询按输入值进行查询。
图表 24:查询参数对话框 3 3 创建统计查询 查询还可以对字段统计次数,对数值型字段汇总,查找最大、最小值,计算平均值、标准差、方差等。比如,每张销售单中有多种商品,每种商品的销售额计算方法为:数量×单价×(1-折扣),汇总销售单中所有商品的销售额即为该销售单的总额。要查询每张销售单的总额,操作方法如下:
打开查询设计视图,添加“售货单明细”表,添加“售货单 ID”字段,在紧邻“售货单 ID”字段位置输入表达式“总额: [单价]*[数量]*(1-[折扣])”(注:冒号前为计算字段的显示标题,冒号后为计算表达式),然后点击工具栏中的总计按钮,在设计网格中出现新的一栏选项“总计”,各字段默认值为“分组”,对应“总额”计算机字段的位置点击下拉列表,选择“总计”,如图。运行查询,每张销售单的销售总额便计算统计出来。
《数据库系统应用》上机实验指导书-28-图表 25:统计查询设计 注意:在“统计查询”中,对应“总计”行,一般新建字段(表中原本不存在而在查询中创建的字段:在本例中为“总额”字段)为总计(具体选项根据查询要求选择),其余字段为分组。
实验任务 1. 某供应商提供商品的信息查询:查询出某供应商(在查询中的条件处指定)提供的所有商品的商品名称、类别名称、单价、库存量等信息 2. 销售单的销售额统计:按姓名查询销售员金士鹏(销售员姓名通过参数传递)所销售的所有售货单并统计每个售货单的总金额(在同一个查询中完成;提示:销售员姓名、销售单 ID 为分组字段,新产生一个“总额”字段为总计字段)。
3. 商品月销售额统计:查出每种商品 1997 年 3 月的销售额,包括商品名称、销售月份、销售额;(销售月份通过参数传递)4. 超市销售额统计:
i.超市日销售额统计:统计出指定日期(如:1997-7-7)整个超市总的日销售额 ii.超市月销售额统计:统计出1996 年超市各月的销售总额(具
《数据库系统应用》上机实验指导书-29-体年份可通过参数传递或条件输入); iii.超市年销售额统计:统计出整个超市售货单明细表中所涉及到的所有年份的年销售总额. 5. 销售员业绩统计:
i.按商品类别的销售员月销售额统计:查询出指定年份中各销售员所销售每类商品的类别名称、销售月份、月销售额(该类商品的月销售额)如图:
ii.销售员指定时间段销售额统计:某时间段各销售员的销售额统计 6. 交叉查询:根据实验任务中 5.i 中的查询结果,建立一交叉查询,按月份对各类商品的销售额进行对比及汇总,以分析不同时间人们对商品的需求信息。
作业:
1.分析作业 5.I 的具体实现步骤(包括分析从“显示表”中选用
《数据库系统应用》上机实验指导书-30-哪些表、从选择表中选用哪些字段及创建查询的整个过程)2.写出实验的具体步骤 3.写出实验过程中遇到的问题及你觉得的难点 4.写出实验过程中的心得体会
《数据库系统应用》上机实验指导书-31-实验六 SQL 查询语句练习 一、实验目的 1.掌握数据库操作语句的使用 2.掌握查询分析器的使用方法。
3.掌握 SELECT 语句在单表查询中的应用。
4.掌握 SELECT 语句在多表查询中的应用。
5.掌握 SELECT 语句在嵌套查询中的应用。
二、实验内容 直接编写 L SQL 语句查询 前面设计的查询是通过向导或设计视图等图形界面方式创建的,我们还不知道其真正的 SQL 语句是什么。其实,我们可以通过鼠标点击设计视图的空白区域,在弹出菜单中选择“SQL 视图”或直接点击工具栏左上角的中的“SQL 视图”,即可查看查询背后的 SQL 语句。实际上,我们可以修改已经创建好的查询,甚至在空白的设计视图中徒手编写 SQL 语句创建查询。不过,这需要对 SQL 比较熟悉才行,而且要注意的是 Access 是一个具体的软件环境,并不一定支持所有 SQL 语句,使用教材上的示例 SQL 语句时要结合 Access 的在线帮助。
1 .Select 查询语句 SQL 语言提供了 Select 语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。其一般格式为:
SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] Select 语句的功能是:根据 Where 子句的条件表达式,从 From 子句指定的基本表的全部元组中找出满足条件的部分元组,再按 Select 子句中的目标列表达式,挑选出这些元组中的某几个特定的属性列值形成结果表。如果有 Group by 子句,则表示要将查询结果按照 Group by 子句后<属性列名>所表示的属性列的不同值进行某种方式的汇总,具体的汇总方式有求和、计数、求最大值、求最小值、求平均值等。如果有 Order by 子句,则还要将查询结
《数据库系统应用》上机实验指导书-32-果按 Order by 子句后的<属性列名>的值的升序(ASC)或降序(DESC)进行排序。
1)).单表查询 单表查询是指仅设计一个表的查询。很多情况下,用户只对表中的一部分属性列感兴趣。可以通过在 select 字句的《目标列表达式》中指定要查询的属性。
A. . 选 择某个表中的若干属性列(投影)即从数据库的一个表中挑选出某几个特定的属性列值。
例 例 2-1 查询所有供应商的公司名称、联系人姓名、联系人职务、地址和电话号码。
Select 公司名称, 联系人姓名, 联系人职务, 地址,电话 From 供应商 注意:Select 子句后面的<目标列表达式>中各个属性列的先后顺序可以和其在表中的顺序不一致。例如,可以调整本例中 Select 后面的属性列的顺序,改为先列出公司名称和电话号码,再列出联系人姓名和客户地址,调整后的 Select 语句为:
Select 公司名称, 地址, 联系人姓名, 联系人职务,电话 From 供应商 例 例 2-2 查询所有产品的详细记录。
Select 商品 ID,商品名称,供应商 id,类别 id,单位数量,单价,库存量,警戒库存量 From 商品 本查询列出了产品表的所有属性列值,而且属性列的顺序与其在表中的顺序完全一致,因此在 Select 子句中可以简单地用(*)代替全部的属性列名。
Select * From 商品 注意:如果列的顺序与其在表中的顺序不完全一直,就不可以用这种方法。
例 例 2-3 查询被客户订购了的商品 ID。
Select 商品 ID From 售货单明细 注意:在上面的查询结果中包含了许多重复的行。这是因为有许多产品被重复订购了,而 Select 子句的缺省含义是 Select all,即保留重复行,这样就出现了上面的查询结果。如希望去掉重复的行,需要在 Select 子句中使用Distinct 短语,修改后的语句为:
Select Distinct 商品 ID From 售货单明细 B. . 选择某个表中符合适当条件的 记录(选择)
《数据库系统应用》上机实验指导书-33-在实际的查询过程中,有时我们不是简单地从数据库的某个表中挑选一些列,而是需要挑选出符合自己规定的某个(或某些)条件的部分记录,这时就需要在 Select 语句中加入条件子句(Where 子句)。
例 例 2-4 查询所有“北京”和“上海”的客户的公司名称、联系人姓名、联系人头衔和电话号码。
Select 公司名称, 联系人姓名, 联系人职务, 城市,电话 From 供应商 Where 城市= "北京" or 城市="上海" 本例中使用了两个查询条件:“城市= "北京" or City="上海"”,并用“or”运算符将其连接,表示希望查询北京客户或上海客户的信息。
Where 子句中常用的查询条件及运算符(或谓词)有很多,具体如下:
查询条件 运算符(或谓词)比较 =,>,<,>=,<=,<>确定范围 BETWEEN AND,NOT BETWEEN AND 确定集合 IN,NOT IN 字符匹配 LIKE,NOT LIKE 空值 IS NULL,IS NOT NULL 多重条件 AND,OR,NOT 下面我们再通过一些例子来说明一下这些常用的查询条件及运算符(或谓词)的用法。
例 例 2-5 查询单价“不”介于 30 到 50 之间的产品的产品名称及其单价。
Select 商品名称, 单价 From 商品 Where 单价 NOT between 30 and 50 运算符“between…and…”和“not between…and…”可以用来限定某个值的范围,其中 between 后面是范围的下限,而 and 后面是范围的上限。
例 例 2-6 查询所有“不”位于北京、上海、重庆的客户的公司名称、联系人姓名、联系人头衔和电话号码等数据。
Select 公司名称, 联系人姓名, 联系人职务,电话 From 供应商 Where 城市 not in("北京","上海","重庆")有时候我们希望在表中查找字符型属性列值具有某种规律的记录,这时就需要用谓词 LIKE 进行字符匹配,格式如下:
[not] LIKE "〈匹配串〉" [escape "〈换码字符〉"] 其中,〈匹配串〉是包含通配符“*”和“?”的特殊字符串。〈匹配串〉中的普通字符只和属性列值中完全相同的字符匹配,而通配符“*”可以和属性列值中的 0 个或多个任意字符相配,“?”则可以与属性列值中的 1 个任意字
《数据库系统应用》上机实验指导书-34-符相匹配。
例 例 2-7 查询供应商表中所有(不)以林开头的联系人的姓名与头衔。
Select 公司名称,联系人姓名, 联系人职务 From 供应商 Where 联系人姓名 not like "林*" 例 例 2-8 查询所有没有填写传真的供应商的记录。
Select * From 供应商 Where 传真 is null 如果要查询所有输入了传真的供应商记录,只需将 where 子句改为:
Where 传真 is not null 2).多表查询 由于存放在数据库中的各个表不是孤立的,而是相互联系的,因此,有时我们会对多个表的数据同时进行查询以组成一个综合性的结果集。
A. . 简单条件连接查询 简单条件连接查询是指仅涉及一个连接条件的连接查询。
例 例 2-9 查询所有产品的名称、类别名称和库存量等数据。
Select 商品.商品名称,类别.类别名称,商品.库存量 From 商品, 类别 Where 商品.类别 ID=类别.类别 ID 在本例的 select 子句和 where 子句中都用到了<表名>.<列名>这种格式来表示某一列属于哪个表,以消除属性列的二义性。但是如果某一列名(如商品名称)在参加连接的各表中是唯一的话,该列名前的表名是可以省略的。在例 2-10 中,商品名称和库存量两个字段都只在表商品中唯一存在,类别名称字段只在类别表中存在,所以在 select 语句中,此几个字段前的表名都可以省略掉,如例 2-11。
例 例 2-10 Select 商品名称,类别名称,库存量 From 商品, 类别 Where 商品.类别 ID=类别.类别 ID 还要注意的是,在进行表的连接是必须在 where 子句中指明条件,否则就是 广义迪卡尔积,其连接结果一般是无意义的。
B. . 复合条件连接查询 复合条件连接查询是指具有多个条件的连接查询。
例 例 2-11 查询所有单价介于 20 和 50 之间的产品的名称、类别名称、单价和库存量等数据。
《数据库系统应用》上机实验指导书-35-Select 商品名称, 类别名称, 单价, 库存量 From 商品, 类别 Where 商品.类别 ID=类别.类别 ID and 商品.单价 between 20 and 50 3)).嵌套查询 嵌套查询是指将一个 Select-From-Where 查询块嵌套在另一个查询块的 Where 或 Having 短语的条件中的查询。
A. . 带有比较运算符的子查询 当子查询返回的结果是单值时,可以使用比较运算符连接父查询和子查询。
例 例 2-12.1 查询与供应商“为全”有相同城市的所有供应商的公司名称及电话 Select 公司名称,电话 From 供应商 Where 城市=(select 城市 From 供应商 Where 公司名称="为全")例 例 2-12.2 查询与商品 ID 为“1”的商品类别相同,单价却不同的产品的商品ID、商品名称及其单价。
Select 商品 ID, 商品名称, 单价 From 商品 Where 单价<>(Select 单价 From 商品 Where 商品 ID=1)and 类别 ID=(Select 类别 ID From 商品 Where 商品 ID=1)B. .有 带有 IN 谓词的子查询 当子查询的查询结果包含多个值时,经常会使用谓词 IN 来连接子查询和父查询。
例 例 2-13 查询购买了单价比“1”号产品大的那些产品所在的销售单 ID。
Select distinct 售货单 ID From 售货单明细 Where 商品 ID in
《数据库系统应用》上机实验指导书-36-(Select 商品 ID From 商品 Where 单价>(Select 单价 From 商品 Where 商品 ID=1))C. .有 带有 ANY 或 或 ALL 谓词的子查询 当子查询的查询结果包含多个值时,光用谓词“IN”来连接子查询和父查询是不够的,有时会用到前置了比较运算符的谓词“ANY”或“ALL”。其中,“ANY”代表子查询结果中的某个值,“ALL”代表子查询结果中的所有值。
例 例 2-14 查询单价价格大于所有 “3”号类产品的产品名称及其价格。
Select 商品名称,单价 From 商品 Where 单价>all(Select 单价 From 商品 Where 类别 ID=3)实验任务:
(第一题必做,做 完还有时间可以完成后面的题目)1.将实验步骤中的所有例题在 SQL 视图中执行 2.在销售员表中增加一个联系人为自己名字的供应商记录,其他字段自己随便设置。
3.查询出姓名为“金正鹏”的销售员的销售员 ID、姓名、职务、雇用日期、家庭电话、地址 4.查询出不姓张的所有销售员的姓名、职务、雇用日期 5.查询出库存量超过警戒库存量但又小于50的...
