实验指导书2008版本定稿

更新时间:2024-04-15 22:27:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

实验一 Visual FoxPro6.0基础操作 ................................................................ 1 实验二 数据库、表的建立与显示 ................................................................. 9 实验三 表的基本操作 .......................................................................... 18 实验四 索引与排序的使用 .................................................................... 25 实验五 多表操作、临时关系和永久关系........................................................... 29 实验六 SQL程序设计 .......................................................................... 37 实验七 查询与视图设计和使用 .................................................................. 44 实验八 程序设计 .............................................................................. 52 实验九 表单程序设计 .......................................................................... 59 实验十 菜单、报表标签设计 .................................................................... 72 实验十一 数据库应用系统设计 .................................................................. 76

0

Visual Foxpro程序设计实验指导书

实验一 Visual FoxPro6.0基础操作

一、实验目的

1、 掌握启动与退出Visual FoxPro 6.0的方法。 2、 掌握项目管理器的启动和使用方法。

3、 掌握命令窗口的操作和简单输出命令的使用。 4、 学会Visual FoxPro的环境设置。

5、 熟悉Visual FoxPro的用户界面,掌握系统菜单中主要菜单项的功能。 二、实验内容及上机步骤

1、Visual FoxPro 6.0的启动与退出。

操作步骤:本题考查的知识点是Visual FoxPro的启动及退出的各种方法。操作步骤如下:

(1)Visual FoxPro 6.0的启动:

方式一:单击“开始”按钮,在弹出的“程序”菜单下选择“Microsoft Visual FoxPro 6.0”菜单项,即可以启动Visual FoxPro 6.0。启动系统后,会出现Microsoft Visual FoxPro6.0主窗口。如图1-1所示:

系统菜单 工具栏 主窗口 状态栏 命令窗口 图1-1 Visual Foxpro用户界面 方式二:如果用户已在Windows桌面上建立了指向Visual FoxPro 6.0系统的快捷方式图标,则只要双击快捷图标,即可以启动Visual FoxPro。

方式三:利用“我的电脑”或“资源管理器”启动。通常是进入“c:\\Program Files\\Microsoft Visual Studio\\Vfp98”这个路径,双击“vfp6.exe”应用程序来启动Visual FoxPro。

方式四:单击“开始”按钮,选择“运行”命令,弹出运行对话框,在打开文本框中输入“c:\\program files\\microsoft visual studio\\vfp98\\vfp6”,也可在运行对话框中选定“浏览”按钮,按照“c:\\program files\\microsoft visual studio\\vfp98“路径,一层层打开文件夹,找到vfp6这个文件后选定“打开”按钮,再单击“确定”按钮即可。

1

(2)Visual FoxPro 6.0的退出:

方式一:单击应用程序窗口中的“关闭”按纽方式二:在“文件”菜单中选择“退出”命令。 方式三:在命令窗口中键入QUIT命令。 方式四:同时按下Alt和F4组合键。

方式五:单击应用程序窗口左上角的控制菜单图标,从弹出的菜单中选择“关闭”命令。或者双击控制菜单图标。

2、认识Visual FoxPro 6.0的工作界面,掌握命令窗口的打开与隐藏、工具栏的定制及菜单项的选择操作,并观察状态栏的提示信息的变化。

操作步骤:本题考查的知识点是Visual FoxPro的用户界面和命令窗口的打开与隐藏等基本操作。

操作步骤如下:

(1) 参考上机题1的操作步骤,启动Visual FoxPro,进入Visual FoxPro的工作界面,如图1-1所示。

Visual FoxPro的用户界面由系统菜单、工具栏、主窗口、命令窗口和状态栏等构成。Visual FoxPro系统菜单包括8个水平菜单项,用鼠标单击选定某菜单项,会弹出其下拉子菜单,如图1-2所示,是Visual FoxPro常用的若干子菜单项。

图1-2 VisualFoxPro的部分子菜单项 (2)命令窗口的打开与隐藏 Visual FoxPro启动后,系统默认命令窗口为活动窗口状态。同其他窗口一样,命令窗口的大小也可调整,有时也需要将命令窗口隐藏起来,隐藏命令窗口的方法如下:

方式一:从“窗口”主菜单中选择“隐藏”命令。

若要把隐藏的命令窗口激活,在“窗口”菜单中选择“命令窗口” 菜单项。 方式二:单击命令窗口右上角的“关闭”按钮。

2

Visual Foxpro程序设计实验指导书

若要把隐藏的命令窗口激活,从键盘上按下Ctrl+F2组合键。 (3)简单输出命令的使用

简单输出命令的格式:??|? <表达式1>[,<表达式2>,…]

功能:依次计算并显示各表达式的值。其中,??表示在同行输出各表达式的值,而?表示换行输出各表达式的值。

例如,在命令窗口输入以下两条命令:

? 6*(22/2)

??”新年快乐”,(120+76)/4

注意观察两条命令执行后,结果在主窗口中显示的位置。 (4)打开?查询设计器?工具栏和?打印预览?工具栏

方式一:选择“显示”菜单中“工具栏”命令,弹出“工具栏”对话框,如图1-3所示,选定?查询设计器?和?打印预览?复选框,然后单击“确定”按钮。

图1-3 “工具栏”对话框 方式二:右击工具栏,弹出快捷菜单,从中选定?查询设计器?和?打印预览?选项即可。也可从快捷菜单中选定“工具栏”选项,打开“工具栏”对话框,如图1-3所示,再选定?查询设计器?和?打印预览?两项。

(5)状态栏信息的变化

①用“Insert“键来切换插入/改写状态,请观察状态栏右下角位置有什么变化。然后,在命令窗口用简单输出命令输出你自己的姓名(例如,?”陈文文”),再分别在插入或改写状态下修改姓名中的第二个字符,注意两种方式下操作结果的不同。

②用“CAPS LOCK”键来切换大写/小写状态,请观察状态栏右下角位置有什么变化,并分别在

3

大、小写状态下,在命令窗口输入一些字符串,例如,比较??AB?和??ab?的输出结果。

③用“Num Lock”键来设置小键盘是否处于数字方式,请观察状态栏右下角位置有什么变化。 3、启动项目管理器,新建一个项目文件,并进行项目管理器的定制、管理等操作。要求用项目向导的方式建立一个项目文件“工资管理系统.pjx”,并将该项目文件保存在“d:\\工资管理系统”文件夹中。

操作步骤:本题考查的知识点是项目文件的建立和项目管理器的操作方法。操作步骤如下:

(1)新建一个项目文件

①单击“文件”菜单中“新建”命令,打开“新建”对话框。

②选择文件类型“项目”,单击“向导”按钮,打开“应用程序向导”对话框,在项目名称栏中输入“工资管理系统”,并选定“创建项目目录结构”复选框,如图1-4所示,然后,单击“确定”按钮,进入项目管理器窗口,如图1-5所示。

图1-4 应用程序向导对话框 图1-5 项目管理器窗口

(2)定制项目管理器 ①折叠与展开

单击项目管理器右上角的上箭头图1-6所示。

,即可折叠项目管理器。在折叠情况下只显示选项卡,如

图1-6 折叠时的项目管理器

将折叠的项目管理器还原为通常大小的方法是单击右上角的下箭头②拖开选项卡与还原

拖动某一选项卡的操作步骤为:先折叠项目管理器,把鼠标移动到要拖动的选项卡,按住鼠标左键不放,将它拖离项目管理器,成为浮动选项卡,如图1-7所示。

4

Visual Foxpro程序设计实验指导书

图1-7 浮动选项卡

如果要还原浮动选项卡,单击选项卡上的关闭按钮,或将选项卡拖回项目管理器中即可。 (2) 项目管理器的操作

项目管理器是Visual FoxPro提供的一种有效的管理工具。在应用程序的开发过程中,无论程序、菜单、表单、报表以及数据库与数据库表,都可在项目管理器中新建、添加、修改、运行和移去。例如,要在项目管理器中创建数据库,操作步骤如下:

①选择“数据”选项卡,选定“数据库”,单击“新建”按钮,打开“新建数据库”对话框,如图1-8所示。

图1-8新建数据库对话框

②单击“新建数据库”按钮,打开“创建”对话框,选定保存数据库的位置(假设保存在d:\\工资管理系统\\data),输入数据库名称“工资管理”,单击“保存”按钮,打开数据库设计器窗口,如图1-9所示。

图1-9 数据库设计器窗口

5

③单击数据库设计器窗口的关闭按钮,返回到项目管理器窗口,注意“数据”选项卡中的“数据库”项前多了个

标志,如图1-10所示。

图1-10 数据选项卡

4.在命令窗口中练习常用的环境设置命令。

操作步骤:本题考查的知识点是用命令方式修改系统配置。操作步骤如下:

(1)在命令窗口依次输入如下命令,并观察显示结果。 SET CENTURY OFF &&不允许显示年份中的世纪部分 ?DATE()

&&系统日期函数

(2)在命令窗口依次输入如下命令,并观察显示结果。 SET CENTURY ON &&允许显示年份中的世纪部分 ?DATE()

(3) 在命令窗口依次输入如下命令,并观察显示结果。 SET DATE TO ymd &&将日期设置为年月日格式 ?DATE()

(4)在命令窗口依次输入如下命令,并观察显示结果。

SET DATE TO AMERICAN &&将日期设置为美国格式,即月日年格式 ?DATE()

注意:使用SET命令设置系统环境时,仅在本次运行中有效。一旦退出了Visual FoxPro,这些设置不再生效。 三、实验习题

1.设置时区时间的显示格式,将日期设置为年-月-日格式。

2.将“d:\\工资管理系统”文件夹设置为Visual FoxPro默认的工作目录。 3.打开或关闭状态栏时钟。

4.试用三种方法建立项目文件,假设项目文件名为“学生管理”,将该项目文件保存在D盘中。 5.在命令窗口中执行如下命令,写出命令执行结果。

6

Visual Foxpro程序设计实验指导书

在命令窗口中执行命令 ?3*4/5 ?”云南昆明” ??{^2003-12-25} X=”嫦娥一号” ?len(x) ?substr(x,1,2) Display memory Clear memory ?_windows

四、习题要点提示

1. 此题可使用“选项”对话框来进行系统配置。从“工具”菜单中选择“选项”命令,打开“选项”对话框,

如图1-11所示。

命令执行结果 1-10“选项”对话框 2.设置默认目录可用“工具”菜单下的“选项”命令,也可用“set default to d:\\工资管理系统”命令实现。 3. 打开或关闭状态栏时钟有两种方式,注意观察状态栏的右下角位置的变化情况。 (1)菜单方式,利用“选项”对话框实现。

(2)命令方式,利用SET CLOCK ON命令打开状态栏时钟;SET CLOCK OFF命令则关闭状态栏时钟。

7

4.建立项目文件的方法有三种: (1)向导方式(参考上机题3)。

(2)菜单方式:打开”文件”菜单的”新建”对话框,选择“项目”文件类型,单击“新建文件”命令按钮。 (3)命令方式:Creat project d:\\学生管理

8

Visual Foxpro程序设计实验指导书

实验二 数据库、表的建立与显示

一、实验目的

1.了解自由表和数据库表的区别。 2.掌握自由表的建立方法。

3.掌握表的打开、关闭等基本操作。

4.熟练掌握显示表中数据和向表中添加数据的操作方法。 二、实验内容及上机步骤 1.建立如表2-1所示的二维表。

表2-1 员工表

员工 姓名 编号 010101 010201 010102 010301 010401 010203 010502 陈胜利 刘莉莉 唐家 赵高 刘敏敏 胡卫国 贺子 男 女 男 男 女 男 女 .T. .F. .T. .T. .T. .F. .F. 教授 助教 副教授 讲师 讲师 助教 助教 07/01/86 07/02/04 06/26/90 07/02/99 06/28/98 07/03/01 07/08/02 性别 婚否 职称 工作日期 编号 01 02 01 03 04 02 05 级别 5 1 4 3 4 4 3 13907318988 13007311339 13344558866 13872330999 13935790733 13107312425 13707314528 memo memo memo memo memo memo memo gen gen gen gen gen gen gen 部门 工资 联系电话 简历 照片 员工表的结构如表2-2所示: 表2-2 员工表结构

字段名 员工编号 姓名 性别 婚否 职称 工作日期 部门编号 字段类型 字符型 字符型 字符型 逻辑型 字符型 日期型 字符型 字段宽度 6 8 2 1 10 8 2 小数位数 NULL 否 是 是 是 是 是 是 9

字段名 工资级别 联系电话 简历 照片 字段类型 数值型 字符型 备注型 通用型 字段宽度 2 11 4 4 小数位数 0 NULL 是 是 是 是 操作要求: ①建立员工表.DBF的结构后,立即输入所有记录的数据,并编辑第一条记录的简历字段和照片字段,两字段的内容参见②。

②简历字段的内容为“2000年至今任本校校长”;照片字段的内容由读者利用WINDOWS自带的画图程序绘制一个图像。

③数据全部输入后,存盘退出。

操作步骤:本题考查的知识点是自由表的建立。操作步骤如下:

(1) 建立表结构

① 选定“文件”菜单中的“新建”命令(或单击工具栏中的“新建”按钮),弹出“新建”对话框,如图

2-1所示。

图2-1 新建对话框 图2-2 “创建”对话框

② 选定新建对话框中的“表”选项,单击“新建文件”按钮,弹出“创建”对话框,如图2-2所示。 ③ 从“保存在”列表框中选定文件保存的位置(假设选定d:\\工资管理系统\\data为存储位置,注意

不要存储在C盘位置,因为实验机房中主机的C盘没有写的权限),并在“输入表名”文本框中输入员工表 ,然后单击“保存”按钮,便出现表设计器窗口,如图2-3所示。

说明:也可在命令窗口中执行命令CTEATE d:\\工资管理系统\\data\\员工表,便可实现以上①②③三

10

Visual Foxpro程序设计实验指导书

步操作,同时出现如图2-3所示的表设计器窗口。

图2-3 员工表.DBF的表设计器对话框

④ 按照题干中的表2-2,依次输入各字段的字段名、类型、宽度、小数位数等属性值(注意字段

默认的类型是字符型,如果要设定为其他类型,比如,婚否字段应定义为逻辑型,则要从类型列表框中选取)。表结构建立完后,单击“确定”按钮,便弹出图2-4所示的对话框,询问“现在输入数据记录吗?”。选择“是”按钮,将出现员工表记录编辑窗口,如图2-5所示,此时,进入建表的第二步:输入表记录内容。

图2-4 输入记录询问对话框

(2) 输入记录

在表记录输入窗口(如图2-5所示)中,用户可以逐条输入记录内容。其中,各字段的排列次序及字段名右侧文本区宽度都与表结构的定义相符。

图2-5 记录输入窗口

11

数据输入要点: ?

通过记录输入窗口逐个输入每条记录的字段值。当录入一条记录的最后一个字段值时,Visual FoxPro会自动提供下一个记录的输入位置。 ?

逻辑型字段只能接受T,Y,F,N这4个字母之一(大小写不严格区分)。T与Y同义,例如,键入Y,屏幕显示T;同样,F与N同义,例如,键入N,屏幕显示F。 ?

日期型数据必须与日期格式相符,系统默认按美国日期格式mm/dd/yy输入。在记录编辑窗口中,给日期型字段输入数据时,分隔符“/”系统自动提供,只要输入“月日年”对应数字就行了。如果用户设置了日期的显示格式,而输入日期数据与格式不符,系统会发出错误提示,需要重新输入。 ?

备注型字段数据的编辑

在记录输入窗口中,备注型字段初始显示“memo”标志,其值须通过一个专门的编辑窗口输入,具体的操作步骤如下:

①将光标移到第一个记录的备注型字段的memo处,按Ctrl+PgDn或用鼠标双击字段的memo标志,进入备注型字段编辑窗口,如图2-6所示,在该窗口中输入“2000年至今任本校校长”。

图2-6 备注型字段的编辑窗口

②编辑完成后,按Ctrl+W将数据存入相应的备注文件(后缀名为.fpt)之中,并返回到记录输入窗口。(若按Ctrl+Q或Esc键,则放弃本次输入数据,并返回到记录输入窗口。)

注意:在备注型字段输入数据后,该字段的memo标志变成Memo。由此,通过观察memo标志的第一个字母是大写还是小写,可以判断出该备注型字段是否已经输入了内容。 ?

通用型字段数据的编辑

通用型字段内容的显示与备注型字段类似,不同的是通用型字段在编辑窗口中的标识是Gen或gen,其中该字段为空时为gen,若在其中已经存入对象,则变为Gen。 给通用型字段输入数据的具体操作步骤如下:

①将光标移到第一个记录的通用型字段的gen处,按下Ctrl+PgDn键或用鼠标双击字段的gen标志,进入通用型字段编辑窗口,如图2- 7所示。

12

Visual Foxpro程序设计实验指导书

图2-7 通用型字段的编辑窗口

②选择“编辑”菜单中“插入对象”命令,弹出“插入对象”对话框,如图2-8所示。

图2-8 “插入对象”对话框

③选定“新建”按钮,从“对象类型”列表框中选择”画笔图片”,再单击“确定”按钮,则启动了画笔图片,如图2-9所示,然后用户直接在图2-9的窗口中使用画笔进行绘制图像。

图2-9 在通用型字段编辑窗口中启动画笔图片窗口

编辑完成后,按Ctrl+W将数据存入相应的备注文件之中,并返回到记录输入窗口。若按Ctrl+Q或

13

Esc键,则放弃本次的操作并返回到记录输入窗口。

(3) 所有记录输入完毕后,从键盘上按Ctrl+W组合键存盘退出,返回到Visual FoxPro主窗口。 2.打开员工表.DBF,分别查看其结构与记录,包括简历字段和照片字段。

操作步骤:本题考查的知识点是表的打开与显示。操作步骤如下:

(1) 打开表。刚建立的表是自动打开的,如果要打开以前所建立的表,有两种方式: ① 菜单方式

选择“文件”菜单下的“打开”命令或单击工具栏中的“打开”按钮,在文件类型列表框中选择“表(.dbf)”,然后选定要打开的员工表,如图2-10所示,再单击“确定”按钮。

图2-10“打开”对话框

② 命令方式

在命令窗口键入如下命令: USE D:\\工资管理系统\\data\\员工表 (2) 查看表结构:

① 菜单方式

选择“显示”菜单中的“表设计器”命令,出现表设计器窗口(参看图2-3),拖动垂直滚动条可显示其他字段行,然后选定“取消”按钮,关闭表设计器。 ②命令方式

在命令窗口中键入LIST STRUCTURE命令或DISPLAY STRUCTURE命令显示表结构。 (3)查看记录 A、菜单方式

选择“显示”菜单中的“浏览”命令,便出现如表2-1所示的员工表窗口,用户可查看到各记录数据,双击某记录的memo区或gen区,即显示该记录的简历字段或照片字段值。例如,双击第一个记录的Memo区(显示上机题1中如图2-6所示的内容)。

14

Visual Foxpro程序设计实验指导书

B、命令方式

在命令窗口中键入BROWSE或LIST 或DISPLAY ALL命令都可显示表中全部记录。 3.打开员工表.DBF,利用菜单操作方式在该表的的末尾添加一条新记录。

操作步骤:本题考查的知识点是在表尾添加记录。操作步骤如下:

(1) 在主窗口的“文件”菜单中选定“打开”命令,弹出“打开”对话框,然后选择员工表,如图2-10所示,

再单击“确定”按钮。

(2) 选择主窗口“显示”菜单中的“浏览”命令,再选定“显示”菜单中的“追加方式”命令, 则在表的末尾

添加一个空记录,如图2-11所示,然后给这条空记录任意输入数据。

图2-11 添加空记录窗口

三、实验习题

1.打开表文件员工表.DBF,写出满足下列操作要求的命令或命令序列: (1) 显示第4个记录。

(2) 显示第2个到第5个记录。

(3) 显示所有工资级别大于3的男员工的记录。 (4) 显示在1995年以前参加工作的员工的记录。 (5) 显示员工编号的最后一位为“1”的全部员工记录。 (6) 显示所有未婚的员工记录。

(7) 显示第1个记录的简历字段的内容。

2. 打开d:\\工资管理系统\\工资管理系统.PJX,在项目管理器中建立三个自由表:工资表、部门表和用户表。其中,工资表的表结构和记录分别如表2-3、表2-4所示;部门表的表结构和记录分别如表2-5、表2-6所示;用户表的表结构和记录分别如表2-7、表2-8所示;

15

表2-3 工资表结构

字段名 员工编号 基本工资 职称津贴 水电费 应发工资 代扣税 实发工资 类型 字符型 数值型 数值型 数值型 数值型 数值型 数值型 宽度 6 8 7 8 7 7 8 小数位 2 2 2 2 2 2 表2-4 工资表记录 员工编号 010101 010201 010102 010301 010401 010203 010502 基本工资 1800 649 1400 1050 1100 800 760 职称津贴 2000 500 1500 1000 1000 500 500 表2-5 部门表结构 水电费 180 80 240 170 105 60 30 应发工资 代扣税 实发工资 表2-6 部门表记录 小数位 部门编号 01 02 03 04 字段名 部门编号 部门名称 类型 字符型 字符型 宽度 2 10 部门名称 校办 人事处 会计系 信管系 财经系 教务处

05 06 16

Visual Foxpro程序设计实验指导书

表2-7 用户表结构

字段名 操作员编号 操作员姓名 登录名称 登录密码 操作权限 类型 字符型 字符型 字符型 字符型 数值型 宽度 2 8 20 10 1 小数位 表2-8 用户表记录 操作员编号 01 02 操作员姓名 曾小萍 邓文波 登录名称 管理员 普通用户 登录密码 12345678 操作权限 0 1 四、习题要点提示 1. 用USE命令打开表文件

(1) 描述第4个记录可以使用范围子句,也可使用RECNO()函数充当条件子句来实现。 (2) 在没有学习记录指针移动之前,可使用RECNO()函数充当条件子句来实现。 (3) 要用AND连接两个子条件。

(4) 描述“1995年以前”这个条件,可以使用YEAR(工作日期)<=1995,也可使用工作日期

<={^1995/01/01}表达式充当条件来实现。 (5) 使用RIGHT函数充当条件来实现。

(6) 在员工表中婚否字段的类型为逻辑型,可以直接使用“FOR NOT婚否”来描述未婚的条件。 (7)注意显示范围是“第1条记录”,要显示某字段的信息,必须明确写出该字段的字段名。 2.在项目管理器中建立自由表的方法是:从项目管理器中选择“数据”标签,选定自由表,然后单击“新建…”按钮。

17

实验三 表的基本操作

一、实验目的

1.熟练掌握浏览和修改表记录。

2.理解表的记录指针与当前记录的意义。

3.掌握表记录的添加、删除、复制以及表结构复制等操作方法。 4.掌握数组与表之间的数据传递。 二、实验内容及上机步骤

1.打开实验四建立的员工表.DBF,分别以浏览方式和编辑方式查看和修改表记录。

操作步骤:本题考查的知识点是表记录的两种显示方法。操作步骤如下:

(1)浏览方式查看和修改记录:选定“显示”菜单的“浏览”命令;或者在命令窗口中键入BROWSE命令,然后在浏览窗口中直接修改记录。如图3-1所示。

图3-1 使用BROWSE命令打开员工表的浏览窗口

(2)编辑方式查看和修改记录:选定“显示”菜单的“编辑”命令;或者在命令窗口中键入CHANGE或EDIT命令,然后在编辑窗口中直接修改记录。如图3-2所示。

图3-2 使用CHANGE命令打开员工表的编辑窗口

18

Visual Foxpro程序设计实验指导书

2.使用菜单操作和命令两种方式来实现记录指针的移动。

操作步骤:本题考查的知识点是记录指针的移动。操作步骤如下:

(1) 菜单操作方式

① 打开表文件员工表.DBF,以浏览窗口方式显示表记录。在“表”菜单中单击“转到记录”命令,将弹

出其子菜单项。如图3-3所示。

图3-3 “表”菜单显示

② 在子菜单中分别选择“第一个”、“最后一个”、“下一个”、“上一个”、“记录号…”或“定位…”,观察记录指针在浏览窗口中的移动。

③ 若选择了“记录号…”,则出现如图3-4所示的“转到记录”对话框,在记录号列表框中输入一个记录号或通过微调按钮设置记录号,然后单击“确定”按钮,则当前记录就是该记录号所对应的记录。

图3-4 “转到记录”对话框

若选择了“定位…”,则出现如图3-5所示的“定位记录”对话框,在作用范围列表框中选定要操作记录的范围,在FOR或WHILE文本框中输入条件表达式,然后单击“定位”按钮,则当前记录就为指定范围内且满足所给条件的第一个记录。

19

图3-5 “定位记录”对话框

(2) 命令方式

在命令窗口中输入下列命令: USE D:\\工资管理系统\\data\\员工表 ?RECNO() GO BOTTOM ?RECNO() SKIP -2 ?RECNO() USE

3.将员工表.DBF完全复制生成新文件YG.DBF,且将该文件保存在与员工表.DBF相同的目录下(D:\\工资管理系统\\data)。然后打开表文件YG.DBF,在YG.DBF表中的第三个记录后及表尾添加一条记录,记录内容可由读者任意定义。

操作步骤:本题考查的知识点是表的复制,记录的添加与字段内容的替换。操作步骤如下:

&& 打开表

&& 屏幕显示:1。 打开表,当前记录为第一个记录 && 指向表的最后一个记录

&& 若表中总共有7个记录,则屏幕显示:7 && 记录指针朝文件头方向移动2个记录 && 屏幕显示:5 && 关闭表

(1)首先在命令窗口中输入环境设置命令,将当前路径设置为D:\\工资管理系统\\data,接着打开员工表.DBF,原样复制生成新文件YG.DBF,然后打开新文件YG.DBF。如图3-6所示。

图3-6 生成新表YG.DBF的命令窗口及新表的浏览窗口

(2)在第三个记录后添加一条自定义记录的方法:先将记录指针定位到第三个记录,然后执行不带任

20

Visual Foxpro程序设计实验指导书

何选项的INSERT命令添加一条自定义记录;或者先在第三条记录后面添加一条空记录,然后使用REPLACE命令将空记录的内容进行替换(假设只替换员工编号和姓名字段的内容),如图3-7所示(用命令方式实现)。

图3-7 在表中添加记录窗口

(3)在表尾添加空记录并自行添加数据

方法1:在命令窗口执行APPEND命令,进入记录编辑窗口,然后任意输入记录的内容。 方法2:选择“表”菜单中的“追加新记录”命令,然后在浏览窗口中的空记录处输入数据,如图3-8所示(只添加了员工编号和工作日期字段的数据)。 方法3:在命令窗口执行以下命令序列 APPEND BLANK

REPLACE 员工编号 WITH ?020000?,工作日期 WITH {^1997-07-01}

图3-8 在表尾添加记录窗口

4.将添加的表尾记录彻底删除。

命令方式:执行了APPEND命令后,在表尾添加的新记录即当前记录。因此,可以直接使用逻辑删除和物理删除命令将该记录真正删除。如图3-9所示。

21

图3-9 删除表尾记录窗口

菜单操作方式:

① 选择“表”菜单中的“删除记录…”命令,出现“删除”对话框,如图3-10所示。

图3-10 删除对话框

② 在“作用范围”下拉列表框中选择record,再在右边输入9,单击“删除”按钮,则在该记录上加上

了删除标记“”(或者直接在该记录号的左边单击,使出现删除标记“”),然后选择“表”菜单中的“彻底删除”命令,弹出一个对话框,询问“从d:\\工资管理系统\\yg.dbf移去已删除记录?”,选定“是”按钮,则该记录从表中真正删除。

5.将上机题3中生成的表YG.DBF以菜单操作方式修改结构,操作要求如下:

(1) 将职称的宽度由10改为8。

(2) 将字段名员工编号改为员工代码,宽度由6改为8。 (3) 在婚否字段之后添加一个字段“出生日期(D)”。 (4) 删除名为工作日期的字段。

操作步骤:本题考查的知识点是表结构的修改。操作步骤如下:

(1)选定“文件”菜单的“打开”命令,或者单击工具栏中的“打开”按钮,将表YG.DBF打开。表打开之后,选定“显示”菜单中的“表设计器”命令,出现“表设计器-yg.dbf”对话框,如图3-11所示。在该图中,选定职称字段,将其宽度由10改为8。

22

Visual Foxpro程序设计实验指导书

图3-11 表设计器对话框

(2)在图3-11中,选定员工编号字段,将其字段名改为员工代码,宽度由6改为8。

(3)在图3-11中,选定职称字段,单击“插入”按钮(新字段将插入在当前字段之前),然后在字段名文本框中输入出生日期、类型下拉列表框中选定日期型、宽度默认为8。

(4)在图3-11中,选定工作日期字段行,然后单击“删除”按钮,即删除了该字段。

(5)单击“确定”按钮(或按Ctrl+W),将出现信息提示窗口,询问“结构更改为永久性更改?”,选择“是”按钮确认上述修改,并关闭表设计器。 三、实验习题

1.打开员工表.DBF,使用命令方式分别实现BOF()和EOF()函数为逻辑真值的情况。

2.针对员工表.DBF,按如下要求进行复制操作(假设复制后的新文件与员工表文件要在相同的目录中),写出命令序列。

(1)复制员工表.DBF的结构,生成表文件YG1.DBF,并将其结构显示出来。 (2)复制一个仅有员工编号、姓名、性别、职称等4个字段的表结构YG2.DBF。 (3)将第2个到第5个记录复制到表YG3.DBF中。

(4)将员工表.DBF按系统数据格式复制为文本文件,并查看该文本文件,再将YG.TXT中的数据添加到YG3.DBF中去。

3.从员工表.DBF复制出YG4.DBF,然后针对YG4.DBF,按以下操作要求写出命令或命令序列。 (1)将YG4.DBF中的工资级别字段值用工资级别+1进行替换。

(2)在第2个记录之后插入一个空记录,并自行确定一些数据填入该空记录中。 (3)将第3个记录与第5个记录分别加上删除标记。

(4)撤消第5个记录上的删除标记并将第3个记录从表中真正删除。 四、习题要点提示

1.首先要理解两个函数的含义。BOF()函数用来检测记录指针是否指向文件头;EOF()函数用来检测记录指针是否指向文件尾。

刚打开员工表.DBF时,记录指针默认指向第一个记录,即当前记录为第一个记录。使用SKIP -1命令将记录指针往文件头方向移动一个记录,此时记录指针指向文件头,则BOF()为逻辑值.T.;使用

23

GO BOTTOM命令将记录指针指向表中最后一个记录,然后使用SKIP命令将记录指针往文件尾方向移动一个记录,此时记录指针指向文件尾,则EOF()为逻辑值.T.。

2.先使用设置默认路径命令,将当前路径设置为D:\\工资管理系统\\data,再用命令或命令序列实现各小题:

(1)仅复制结构,要带关键词STRUCTURE,显示新文件的表结构,必须先打开新表文件。 (2)书写多个字段名时,字段名与字段名之间用逗号隔开。 (3)注意范围的表达,且该题是结构和记录同时复制。

(4)生成SDF格式的文本文件用命令动词COPY,并要带上SDF选项;查看文本文件的命令为TYPE YG.TXT(该文件的扩展名一定不能省略);要将YG.TXT中的数据添加到表YG3.DBF,必须首先将YG3.DBF打开,然后使用命令APPEND FROM YG.TXT SDF实现。

3.从员工表.DBF复制出YG4.DBF用COPY命令实现,然后用USE命令打开表YG4.DBF: (1)替换字段命令是replace,注意要使用范围子句ALL。

(2)自行添加数据,可以使用命令REPLACE进行添加,也可直接在浏览窗口输入。

(3) 实现对第3个和第5个记录操作,要使用范围子句RECORD ,或者使用条件子句FOR RECNO()=N,或者使用记录指针定位命令。

(4)撤消第5个记录上的删除标记后,直接使用PACK命令将第3个记录从表中真正删除,不需要再把记录指针定位到第3个记录。因为PACK命令只将作删除标记的记录真正删除。

24

Visual Foxpro程序设计实验指导书

实验四 索引与排序的使用

一、实验目的

1.了解索引的分类,索引与排序的区别。 2.熟练掌握索引与排序的创建方法。 3.掌握直接查询与索引查询数据的方法。 二、实验内容及上机步骤

1.打开员工表.dbf,以“职称”字段为关键字段进行排序(降序),并将生成的新表文件“员工职称排序表”保存在“D:\\工资管理系统\\”目录下,假设Visual FoxPro默认的工作目录指向“D:\\工资管理系统”文件夹。

操作步骤:本题考查的知识点是排序的创建与排序的特点,操作步骤如下:

(1)在命令窗口中执行如下命令: USE data\\员工表

SORT TO员工职称排序表 ON 职称/ D

(2)查看结果,必须先打开排序生成的新表,才能显示排序后的结果。分别执行如下命令: USE员工职称排序表

LIST

按职称排序的结果如图4-1所示:

图4-1 员工表按职称值降序排序的结果

注意:职称的降序并不是按职称由高到低排列,是按职称字段值的字符大小排列。如本题中职称字段值的排列顺序应为:助教>教授>讲师>副教授

2.用命令方式创建单索引文件,以职工表中的部门编号字段为关键字段建立一个普通索引。

操作步骤:本题考查的知识点是索引的类型与索引文件的创建,操作步骤如下:

(1) 打开职工表,查看记录的排序。在命令窗口中执行如下命令:

USE data\\员工表 LIST

索引前,原表中的数据如图4-2所示:

25

图4-2 原表的排序结果

(2)创建一个单索引文件“部门编号.idx”,同时该索引自动打开, 执行如下命令:

INDEX 0N 部门编号 TO 部门编号 LIST

索引后的结果如图4-3所示:

图4-3 按部门编号索引后的结果

注意观察索引后,记录的排列顺序,索引改变了表中记录的逻辑顺序。

(3) 假设对同一个表建立了多个索引文件,那么只有最后建立的索引能自动打开。如果用户希望打开以前所建的索引,例如,打开按部门编号建立的索引,应输入如下命令: SET INDEX TO 部门编号 LIST

注意:“SET INDEX TO部门编号”命令中的“部门编号”是索引名,此命令是打开已存在的索引,按部门编号索引排列。

3.分别用直接查询与索引查询两种方式,查询出所有部门编号为?02?的员工。

操作步骤:本题考查的知识点是数据的查询。操作步骤如下:

(1)直接查询方式,执行如下命令:

USE 职工表

LOCATE FOR 部门编号='02'

DISPLAY 重复执行这两条命令, CONTINUE 直到出现“已定位到范围末尾”

(2)索引查询方式,执行如下命令:

USE 职工表

INDEX ON部门编号TAG BMFF SEEK .”02”. &&查询02部门的员工记录 ?FOUND()

DISPLAY 重复这三条命令,直到?FOUND()返回值为.F.。

26

Visual Foxpro程序设计实验指导书

SKIP

4.(*选做题)计算工资表中所有人的基本工资总额、平均基本工资、基本工资的最大值及最小值,并统计职工表中部门编号为“01”的部门人数。

操作步骤:本题考查的知识点是对数据表的统计与计算命令,操作步骤如下:

(1)打开工资表:

USE data\\工资表

(2)求基本工资总额,用如下命令: SUM 基本工资 TO 总基本工资 ?总基本工资

(3)求基本工资的平均值,用如下命令实现: AVG 基本工资 TO 平均基本工资 ?平均基本工资

(4)求基本工资的最大值,用如下命令实现: MAX 基本工资 TO 基本工资最大值 ?基本工资最大值

(5)求基本工资的最小值,用如下命令实现: MIN 基本工资 TO 基本工资最小值 ?基本工资最小值

(6) 统计员工表中部门编号为“01”的人数,用如下命令实现: COUNT FOR 部门编号=?01? TO 某部门人数 ?某部门人数

5.(*选做题)先建一个表文件,表名为“图书表.DBF”,包含字段:书编号、书名、出版单位、作者、价格,其中只有“价格”为数值型,其余均为字符型。针对图书表,如图4-4所示,按出版单位字段进行分类汇总各出版社的总书价。

图4-4 图书表中所有记录

操作步骤:本题考查的知识点是分类求和运算的方法,操作步骤如下:

(1)建立图书表(参考实验四中的上机题1的操作步骤)。

27

(2)以出版单位字段为关键字段创建索引,命令如下:

INDEX ON 出版单位 TO 出版单位.idx &&这是分类求和前必做的工作 (3)做分类汇总操作,生成新表,表名为“各出版社书总价”,命令如下: TOTAL TO各出版社书总价.dbf ON 出版单位 (4)打开汇总后生成的新表,命令如下:

USE 各出版社书总价.dbf

(5)显示汇总结果,结果如图4-5所示。 BROWSE FIELDS 出版单位,价格

图4-5 分类汇总后的结果

三、实验习题

1.打开工资表,以部门编号字段为关键字段进行排序(升序),并将生成的新表文件“职工部门排序表.dbf”保存在Visual FoxPro默认的工作目录“D:\\工资管理系统\\”中。

2.针对职工表,创建结构复合索引文件,要求按工作日期字段降序方式建立一个普通索引。 3.分别用直接查询与索引查询两种方式,查询出所有2000年(包括2000年)以后参加工作且未婚的员工。

4.针对职工表,以部门编号为第一关键字段,工资级别为第二关键字段降序方式建立一个结构复合索引文件。

5.针对“图书表.dbf”,计算所有书的总价格、平均价格、最高价格、最低价格,并统计清华出版社在图书表中的书的数量。 四、习题要点提示

1.排序的命令动词为SORT,要显示排序的结果必须先打开新表。

2.创建结构复合索引文件的语法格式为:INDEX ON <索引关键字段表达式> TAG <标识名> [ASCENDING|DESCENDING]。

3.此题可参照上机题3解答,只是索引表达式不同,表达2000年以来这个条件要用YEAR()函数。 4.当索引表达式包括多个字段时,应转换为同一类型的表达式,通常转换为字符型表达式;实现工资级别降序可用“10000-工资级别”表达,数值型转换为字符型要用到STR()函数。

5.此题可参照上机题4解答,分别要用到SUM、AVERAGE、MAX、MIN、COUNT命令。

28

Visual Foxpro程序设计实验指导书

实验五 多表操作、临时关系和永久关系

一、实验目的

1.掌握多表之间临时关系与永久关系的建立。

2.掌握数据库文件的建立、数据库表的添加与修改操作。 3.了解参照完整性设置的方法及作用。 4.学会使用数据工作期窗口。 二、实验内容及上机步骤

1.在数据工作期窗口中,创建部门表与职工表之间的一对多类型的临时关系。

操作步骤:本题考查的知识点是在数据工作期中创建表间临时关系。操作步骤如下:

(1) 单击“窗口”菜单下的“数据工作期”命令,打开“数据工作期”对话框,如图5-1所示。

图5-1 “数据工作期”对话框

在数据工作期窗口中,单击“打开”按钮,弹出 “打开”对话框,如图5-2所示。选定职工表,单击“确定”按钮,将其放入 “别名”框中,重复这一步,再将部门表放入“别名”框,如图5-3所示。

图5-2 “打开”对话框 图5-3 打开职工表与部门表

(2) 从“别名”框中,选择 “职工表” 为主表,单击“关系”按钮,将其放入“关系”框中。

(3) 从“别名”框中,选择 “部门表”为子表,弹出“设置索引顺序”对话框,如图5-4所示。注意:两

表建立关联前,子表必须先按关联表达式(比如,两表的公共字段为关联表达式)建立索引。

29

本例中,若部门表未按“职工编号”建立索引,则需要先建立索引。建立索引的步骤是:先关闭表达式生成器对话框,在数据工作期窗口中单击“属性”按钮,出现 “工作区属性”对话框,如图5-5所示。再单击“修改”按钮,然后在出现的“表设计器”对话框中建立索引。

图5-4 “设置索引顺序”对话框

图5-5 “工作区属性”对话框

(4) 在“设置索引顺序”对话框中,选择部门表中按“部门编号”建立的索引“部门表: Bmbh”,再单击

“确定”按钮,弹出“表达式生成器”对话框,如图5-6所示。

(5) 在“来源于表”的下拉列表框中,选择 “职工表”,再选择索引字段“部门编号”,单击“确定”按钮,

返回数据工作期窗口,此时,在“关系”框中建立了两表之间的临时关系,图5-7所示。

图5-6 “表达式生成器”对话框

30

Visual Foxpro程序设计实验指导书

图5-7 完成表间临时关系的建立

(6) 在“别名”框中,选择“职工表”,单击“浏览”按钮,显示“职工表”。按此方法再打开 “部门表”,

当改变主表“职工表”的当前记录时,子表“部门表”所显示的记录也会同时发生变化,显示部门编号相同的记录,如图5-8所示。

图5-8 两表记录指针的同步移动

【上机题2】用命令方式创建部门表与职工表之间的一对多类型的临时关系。

操作步骤:本题考查的知识点是用命令方式创建表间临时关系。假设主表为部门表,子表为职工表。操

作过程是:先打开子表,以部门编号为关键字建立索引;选择另一个工作区,打开主表,用SET RELATION 命令建立两表之间一对多的关联;显示关联以后两表中记录内容。 命令序列如下:

SELECT 1

31

USE 职工表

INDEX ON 部门编号 TAG bmbh LIST SELECT 2 USE部门表 LIST

SET RELATION TO 部门编号 INTO a LIST职工编号,姓名,职称,a->部门名称 主窗口显示如下:

图5-9 建立多对一关联

【上机题3】用菜单方式建立数据库,库名为工资管理,并在新库中添加部门表和职工表,并建立部门表与职工表的一对多类型的表间永久关系。

操作步骤:本题考查的知识点是创建表间永久关系,操作步骤如下:

(1) 选择“文件”菜单中的“新建”命令,弹出“新建”对话框,如图5-10所示。

(2) 在“新建”对话框中,选择“数据库”按钮,然后单击“新建文件”按钮,弹出“创建”对话框,如图

5-11所示。

(3)在“创建”对话框中输入数据库文件名和保存位置(假设保存在D:\\工资管理系统\\data下),选择“保存”按钮,系统将打开数据库设计器,如图5-12所示。此时,完成创建数据库的操作,并同时打开了数据库设计器。

32

Visual Foxpro程序设计实验指导书

图5-10 “新建数据库”对话框 图5-11 “创建”对话框

说明:也可利用项目管理器中的“新建”按钮建立数据库,并打开数据库设计器。

(4)在数据库设计器中,单击工具栏的“添加表”按钮,或者右击,从快捷菜单中选择“添加表”命令,

弹出打开对话框,选定要添加的职工表,单击“确定”按钮。这样,自由表就被添加进数据库中,成为数据库表。照此操作再添加部门表,如图5-13所示。

5-12 数据库设计器 图5-13 添加数据表

(5) 对数据库表建立索引。由于要建立部门表与职工表的一对多类型的表间永久关系,所以,应对部门表按“部门编号”建立主索引(索引标识前面有一个钥匙记号)或候选索引,对职工表按“部门编号”建立普通索引。建立索引方法如下:

选择需要建立索引的数据库表,单击数据库设计器工具栏的“修改表”按钮或右击数据库表并选择快捷菜单中的“修改”命令,弹出表设计器窗口,在表设计器窗口单击索引选项卡,在索引名、类型、表达式各栏中依次输入有关内容。如图5-14。设置好后,单击“确定”返回数据库设计器。

(6)在数据库设计器中,先用鼠标左键选中部门表中的主索引 “部门编号”,然后拖至与其建立联系的用户表中的对应索引 “部门编号”处,再松开鼠标左键,数据库中的两个表间就有了一根连线,表示两表之间的永久关系建立完成。如图5-15。

33

图5-14 在“表设计器”中建立索引 图5-15 永久关系设置完成

【上机题4】设置职工表与部门表之间永久关系的参照完整性。

操作步骤:本题考查的知识点是参照完整性规则的设置,操作步骤如下:

(1) 在建立参照完整性之前必须首先清理数据库,操作方法是选择“数据库”菜单项中的“清理数据库”

命令。

(2) 打开参照完整性生成器

打开参照完整性生成器窗口有三种方法: ?

在数据库设计器中,右击需要建立索引的数据库表,从弹出的快捷菜单中选择“编辑参照完整性”命令。 ? ?

选择数据库菜单中的“编辑参照完整性”命令。

在数据库设计器中双击两个表之间的连线,在编辑关系对话框中选择“参照完整性”按钮。

(3)参照完整性生成器窗口有更新规则、删除规则和插入规则三个选项卡;更新规则、删除规则中有级联、限制和忽略三个单选项以及一个表格,插入规则有限制和忽略两个单选项以及一个表格,如图5-16所示。

图5-16 参照完整性生成器窗口

34

Visual Foxpro程序设计实验指导书

(4)设置完整参照性:首先选择某一规则选项卡(更新规则、删除规则和插入规则),接着选择某一单选项(级联、限制和忽略),当三个规则设置完成后,单击“确定”即可。 三、实验习题

1. 在D盘上建立一个以自已姓名为名的文件夹,在此文件夹下建立一个文件名为学生管理.dbc的数据

库。然后在数据库中新建两个表:学生表.dbf与成绩表.dbf。学生表的结构:学号(C,6),姓名(C,8),性别(C,2),出生年月(D,8),党员否(L,1),家庭住址(M,4),系代码(C,2)。成绩表结构:学号(C,6),高等数学(N,6,2),英语(N,6,2),计算机应用基础(N,6,2),法律基础(N,6,2)。两个表中的记录内容如下。

图5-17 学生表记录内容

图 5-18 成绩表记录内容

2.以学号为关联表达式建立学生表与成绩表之间一对一的临时关系,设学生表为主表,成绩表为子表。要求显示学生的学号、姓名、高等数学、计算机基础等字段的信息。用命令方式实现该操作。 3.以学号为关键字段建立学生表与成绩表之间的一对一类型的永久关系,设学生表为主表,成绩表为子表。在数据库设计器中实现该操作。

4.对学生管理数据库,进行表结构的修改操作,将“性别”字段的字段有效性规则设置为:性别=”男” OR 性别=”女”,提示信息设为:“性别为男或女”。

四、习题要点提示

1.建立数据库假设用命令方式实现,添加数据库表通常用菜单方式实现。操作过程如下: (1) 使用CREATE DATABASE命令建立数据库文件。

(2) 在创建好数据库文件后,打开数据库设计器的命令是MODIFY DATABASE。 (3) 在数据库设计器中,通过工具栏的 “新建表”命令来添加数据库表。

35

2.临时关系与永久关系的区别主要是永久关系保存在数据库中,而临时关系不会被保存。设主表为学生表,子表为成绩表,关联表达式为“学号”。操作过程如下: (1)选择一个工作区,打开子表,在子表中按“学号”建立索引。

(2)选择另一个工作区,打开主表,然后在此工作区中用命令SET RELATION建立关联。 (3)显示所需要的学生信息。在当前工作区中可以访问其他工作区中已打开的表的数据,可用别名.字段名或别名->字段名来实现。

3.设学生表为主表,成绩表为子表,以学号为关键字段建立学生表与成绩表之间的一对一类型的永久关系。操作过程如下:

(1)打开学生管理数据库文件,可用命令OPEN DATABASE 。 (2)打开数据库设计器,可用命令MODIFY DATABASE。

(3)在数据库设计器中,分别建立学生表和成绩表的索引,且两表的索引类型都为主索引或候选索引。 (4) 通过拖曳的方式在两个表的索引字段连线,完成永久关系的建立。 4.只有数据库表才能进行记录有效性和字段有效性设置。操作过程如下: (1) 打开学生管理数据库。

(2) 右击学生表,在快捷菜单中选择“修改”,弹出“表设计器”对话框。 (3) 在“表设计器”对话框中,进行字段有效性的设置。

36

Visual Foxpro程序设计实验指导书

实验六 SQL程序设计

一、实验目的

1.掌握SQL语言中CREATE定义语句的格式及用法。 2.掌握SQL语言中INSERT语句的格式及用法。 3.掌握SQL语言中UPDATE语句的格式及用法。 4.掌握SQL语言中DELETE语句的格式及用法。

5.掌握SQL语言中SELECT语句的格式,注意WHERE、GROUP BY、ORDER BY等子句的用法。 6.掌握简单查询、连接查询、嵌套查询的应用。 7.了解各种查询条件的表达方法。 8.学会独立书写复杂查询的思路与方法。 二、实验内容及上机步骤 (一)SQL数据操纵语句

数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELETE(检索,又称查询)等组成,由于SELETE比较特殊,所以一般又将它以查询(检索)语言单独出现 1、定义表结构

【格式】CREATE TABLE <表名> (<字段名1><数据类型>[(<宽度>[,<小数位数>])] [完整性约束][NULL | NOT NULL][,<字段名2>…]) 【功能】定义(也称创建)一个表的结构。

【例1】创建一个表STUD(学生信息表),它由以下字段组成:学号 (C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期 (D);是否团员 (L);备注 (M);照片(G)。 CREATE TABLE STUD(; 学号 C(10),; 姓名 C(10),;

性别 C(2),班级名 C(10),; 系别代号 C(2),地址 C(50),; 出生日期 D,是否团员 L,; 备注 M,照片 G) LIST STRUCTURE

【例2】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C,2)。CREATE TABLE SC(学号 C(10),; 课程号 C(2))

37

LIST STRUCTURE

【例3】在课程成绩表SC中,增加一个成绩字段变量(N,3)。 ALTER TABLE SC ADD 成绩 N(3) LIST STRUCTURE 2、添加记录

【格式1】INSERT INTO <表名> [<字段名表>] VALUES (<表达式表>)

【格式2】INSERT INTO <表名> FROM ARRAY <数组名> | FROM MEMVAR 【功能】在指定的表文件末尾追加一条记录。

格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。 格式2用数组或内存变量的值赋值给表文件中各字段。 【例4】在表文件STUD的末尾追加三条记录。 ***追加第一条记录***

INSERT INTO STUD(学号,姓名,性别,班级名); VALUES(“03250110”,“李建国”,“男”,“计0121”) ***追加第二条记录***

INSERT INTO STUD VALUES(“03250101”,”张大宁” ,”男”,20,“机0302”) 更新记录

【格式】UPDATE <表文件名> SET <字段名1>=<表达式> [,<字段名2>=<表达式>…]

[WHERE <条件>]

【功能】更新指定表文件中满足WHERE条件子句的数据。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。 【例5】将成绩表(SC)中,所有课程号为”02”的成绩各加5分。 UPDATE SC SET 成绩=成绩+5 ; WHERE 课程号=“02”

【例6】UPDATE 职工 SET 工资=工资+200 WHERE 职称”讲师” 【例7】UPDATE 学生 SET 年龄=年龄+1 4、删除记录

【格式】DELETE FROM <表名> WHERE <表达式>

【功能】从指定的表中删除满足WHERE子句条件的所有记录。如果在DELETE语句中没有WHERE子句,则该表中的所有记录都将被删除。

【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。 【例8】删除STUD表中所有性别为男的记录。 DELETE FROM STUD WHERE 性别=”男” 【例9】DELETE FROM STUD &&删除所有记录

38

Visual Foxpro程序设计实验指导书

(二)SQL简单查询语句设计

【上机题1】用SQL语言实现查询所有在2000年以前参加工作并且职称是讲师的职工。

操作步骤:本题考查的知识点是带WHERE子句的SELECT查询语句。

在命令窗口中执行如下命令:

SELECT * FROM 职工表 WHERE YEAR(工作日期)<2000 AND 职称=?讲师? 查询结果如图6-1所示:

图6-1 上机题1的查询结果

【上机题2】用SQL语言实现查询职工表中所有姓名里有一个“利”字的职工信息。

操作步骤:本题考查的知识点是带有WHERE子句的SELECT查询语句,及like模式匹配条件与通配符

使用的情况。

在命令窗口中执行如下命令:

SELECT * FROM 职工表 WHERE 姓名 like ?%利%? 查询结果如图6-2所示:

图6-2 上机题2的查询结果

说明:查询条件是“姓名里有一个利字”,这个“利”字可以是姓,也可以是名,因此它可在最前,也可在中间或最后。Like通配符只有两个:?和%,?表示任意一个字符,%表示任意多个字符,因此表达式应该为 ?%利%?。

【上机题3】用SQL语言实现将工资表中所有记录按职称津贴的值升序输出,如职称津贴值相同,再

按基本工资的值降序输出。

操作步骤:本题考查的知识点是带有ORDER BY子句的SELECT语句。

在命令窗口中执行如下命令:

SELECT * FROM 工资表 ORDER BY 职称津贴 ASC ,基本工资 DESC 查询结果如图6-3所示:

39

图6-3 上机题3的查询结果

说明:注意排序的次序,第一排序字段写在前面,第二排序字段写在后面,然后要说明排序方式。升序用ASC表示,也可省略不写;降序用DESC表示。

【上机题4】用SQL语言实现统计职工表中各部门的男职工人数。

操作步骤:本题考查的知识点是GROUP BY子句与WHERE子句的SELECT语句。

在命令窗口中执行如下命令:

SELECT 部门号,COUNT(*) AS 人数 FROM 职工表 WHERE 性别=?男?; GROUP BY 部门号 查询结果如图6-4所示:

图6-4 上机题4的查询结果

说明:先用WHERE子句将职工表中的所有男职工筛选出来,然后对部门进行分组,统计出各部门的男职工人数。

【上机题5】用SQL语言实现统计职工表中各部门的男职工人数,只输出人数大于1人的部门与人数。

操作步骤:本题考查的知识点是带有HAVING子句的GROUP BY子句及WHERE子句的SELECT语句。

在命令窗口中执行如下命令::

SELECT 部门号,COUNT(*) AS 人数 FROM 职工表 WHERE 性别='男'; GROUP BY 部门号 HAVING COUNT(*)>1 查询结果如图6-5所示:

图6-5 上机题5的查询结果

40

Visual Foxpro程序设计实验指导书

说明:该题与第4题相比,多了一个分组条件子句,因为要求只输出分组后统计的男职工人数大于

1人的部门人数,所以要使用HAVING子句。

*【上机题6】用SQL语言实现从职工表、部门表和工资表中查询部门号为“01”的职工信息,要求输出

职工编号、姓名、部门号、部门名称、基本工资字段的值。

操作步骤:本题考查的知识点多表联合查询操作。

在命令窗口中执行如下命令:

SELECT a.职工编号,a.姓名,a.部门号,b.部门名称,c.基本工资; FROM 职工表 a,部门表 b,工资表 c;

WHERE b.部门号=a.部门号 AND a.职工编号=c.职工编号 AND;

a.部门号='01'

查询结果如图6-6所示:

图6-6 上机题6的查询结果

*【上机题7】使用嵌套查询,输出基本工资大于1000的职工的编号、姓名、职称字段的值。

操作步骤:本题考查的知识点是嵌套查询操作。

在命令窗口中执行如下命令:

SELECT 职工编号,姓名,职称 FROM 职工表;

WHERE 职工编号 IN(SELECT 职工编号 FROM 工资表;

WHERE 基本工资>1000)

查询结果如图6-7所示:

图6-7 上机题7的查询结果

(三)SQL复杂查询语句设计 1、联接查询

SELECT [ALL | DISTINCT] <字段列表> FROM <表1>[,表2…..]

41

WHERE <条件表达式> 条件表达式包括:多表的联接条件和记录的筛选条件 例:查询并显示各个学生的学号,姓名,各科成绩及课程名。 SELECT a.学号,a.姓名,b.课程名,c.成绩 ; FROM 学生 a,课程 b,成绩 c ;

WHERE a.学号=c.学号AND b.课程号=c.课程号2、嵌套查询

在SQL语句中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句中的查询称为嵌套查询。 例:在各科成绩表中查找与“李华”籍贯相同的学生名单。 SELECT 学号,姓名,籍贯 ; FROM 各科成绩表 ;

WHERE 籍贯=(SELECT 籍贯 FROM 各科成绩表 WHERE 姓名=\李华\) 3、查询结果排序

例:在各科成绩表中检索各个学生的语文、数学成绩,并按语文成绩降序排列,语文成绩相同时再按数学成绩排序。

SELECT 学号,语文,数学 ; FROM 各科成绩;

ORDER BY 语文 DESC,数学4、分组统计查询

在SQL语句中,使用GROUP BY 短语进行分组,还可以利用统计函数(COUNT, AVG, SUM, MAX, MIN)进行分组统计。

例:在成绩表中统计每一门课的最高分、最低分、总分及平均分。结果按课程号排序。

SELECT MAX(成绩) AS 最高分, MIN(成绩) AS最低分, SUM(成绩); AS总分, AVG(成绩) AS平均分FROM 成绩 ; GROUP BY 课程号; ORDER BY 课程号 三、实验习题

1.用SQL语言实现查询出所有1999年以前参加工作的职工信息. 2.用SQL语言实现查询出姓名中最后一个字为?国?字的职工信息。 3.用SQL语言实现计算职工表中所有女职工的人数 4.用SQL语言实现计算各部门的女职工的人数

5.从职工表与工资表中查询所有职称为“讲师”的职工编号、姓名、职称津贴、水电费,查询结果按

水电费的值升序排列。

6.查询所有职称为“副教授”的职工信息,要求输出职工编号、职工姓名、基本工资、职称津贴等字

段的值。

42

Visual Foxpro程序设计实验指导书

43

实验七 查询与视图设计和使用

一、实验目的

1.掌握使用查询设计器与查询向导创建各种不同类型的查询。 2.掌握使用视图设计器与视图向导创建视图。 3.比较查询与视图的异同之处。 4.学会使用查询与视图的相关设置。 二、实验内容及上机步骤

【上机题1】用查询设计器创建查询,统计员工表中各部门的男员工人数,只输出人数大于1人的部门

编号与人数。

操作步骤:本题考查的知识点是查询设计器的使用,包括函数表达式,分组,筛选条件等选项的使用。

操作步骤如下: (1)进入查询设计窗口

选择“文件”菜单下的“新建”命令,弹出“新建”对话框,选择“查询”,如图7-1所示,然后单击“新建文件”按钮,即进入了查询设计窗口,如图7-2所示。

图7-1 新建对话框

(2)添加查询所需的数据表,本例中添加员工表,如图7-2所示。

44

Visual Foxpro程序设计实验指导书

图7-2查询设计器窗口

(3)单击字段选项卡,选择输出的字段或表达式,如图7-3所示。在可用字段列表框中双击选择“员工表.部门编号”,在函数和表达式文本框中输入COUNT(*),然后单击“添加”按钮,将表达式送到“选定字段”列表框中。

图7-3 字段选定对话框

(4)在筛选对话框设置筛选条件,本例中的筛选条件是“性别为男”,操作方法是:从字段名列表框中选择“员工表.性别”,条件列表框中选择“=”,在实例文本框中输入“男”,如图7-4所示。

图7-4筛选对话框

(5)在分组依据对话框中,选定“员工表.部门编号”为分组字段,如图7-5所示。

45

图7-5 分组依据对话框

(6)在分组依据对话框中选定满足条件按钮,弹出满足条件对话框,从字段名下拉列表中选择表达式,如图7-6所示,弹出表达式生成器窗口,在表达式文本框中输入COUNT(*)>1,如图7-7所示。

图7-6 满足条件对话框

图7-7表达式生成器对话框

(7)单击表达式生成器对话框中的“确定”按钮,返回满足条件对话框,如图7-8所示,然后单击满足条件对话框中的“确定”按钮。

46

Visual Foxpro程序设计实验指导书

图7-8输入了满足条件后的对话框

(8)查询设计完毕, 从Visual Foxpro工具栏中选择运行按钮, 查看结果。如图7-9所示。

图7-9 查询男员工人数大于1人的部门与人数

(9)从键盘按下CTRL+W,在保存文档文本框中输入查询文件名,保存查询。 说明:还有其他方式可以创建查询文件,详细步骤省略。

方式二:选定项目管理器中的“数据”选项卡,选择“查询”,单击“新建”按钮,弹出新建查询对话框,从中选择“新建查询”按钮,即可进入查询设计器窗口。 方式三:命令CREATE QUERY <查询文件名>

方式四:从“工具”菜单中选择“向导”命令,选定“查询”,利用查询向导完成。

【上机题2】从员工表、部门表和工资表中查询所有员工的员工编号、姓名、部门编号、

部门名称、基本工资,并按基本工资值降序排列,且能修改基本工资字段,只输出所有记录的50%。

操作步骤:本题考查的知识点是视图设计器的使用,包括函数表达式、分组、筛选条件、

杂项等选项的使用。操作步骤如下:

(1)右击“数据库设计器”窗口的空白处,弹出快捷菜单,如图7-10所示,然后选定“新建本地视图”命令。也可单击数据库设计器工具栏中的“新建本地视图”按钮,或从“数据库”菜单中选择“新建本地视图”命令,再继续第(2)步。

47

图7-10数据库设计器中快捷按钮

(2) 在新建本地视图对话框中选择“新建视图”按钮,即进入“视图设计器”,如图7-11所示。

图7-11 选择建立视图的方式

(3)在“添加表或视图”对话框中选择要添加的三个数据表员工表、部门表与工资表,添加完成后,单击“关闭”按钮,此时添加的三个表已加入到“视图设计器”中。然后在联接条件对话框中设置联接类型,如图7-12所示。

图7-12 添加表或视图对话框

(4) 单击“字段”选项卡,在可用字段列表框中选择需要输出的列,在本例中选择员工编号、姓名、部

48

Visual Foxpro程序设计实验指导书

门编号、部门名称、基本工资,如图7-13所示。

图7-13 字段对话框

(5)单击“联接”选项卡,为多个表或视图设置联接条件。如果在步骤1中,已为三个表创建了联接,那么这一步就可以省略。如果步骤1中没有创建联接,则选定“联接”选项卡,在联接对话框中,为三表创建联接,如图7-14所示。

图7-14 联接对话框

(6) 选定“排序依据”选项卡,从“选定字段”列表框中选定一个或多个字段作为排序的关键字段,并从排序选项按钮中选择排序的方式。本例中,从选定字段列表框中双击选定基本工资字段,排序选项选择“降序”,如图7-15所示。

图7-15 排序依据对话框

49

本文来源:https://www.bwwdw.com/article/zc4p.html

Top