FoxPro For Windows http://cc.synu.edu.cn 1
第 2讲 建立数据库及基本操作
创建数据库
数据库文件的打开和关闭
数据库的浏览
数据库记录的过滤
数据库指针定位
数据库修改
FoxPro For Windows http://cc.synu.edu.cn 2
定义数据库结构流程
定义结束
Ctrl+W或 OK存 盘
Ctri+Q或Cancel取 消
定义结构
字段名(如,name)
字段类型(C)
字段宽度(8)
create student
创建数据库
两步:
首先定义数据库结构,
然后输入数据库记录,
学生登记表
学 号 姓 名 性别 出生日期 入学成绩 奖学金 简历 照片
9 9 0 1 0 1 王亚洲 男 8 0 / 0 5 / 2 4 515 120
9 9 0 1 0 5 白 雪 女 8 1 / 0 6 / 1 8 540 150
9 9 0 1 0 4 李冬梅 女 8 0 / 0 4 / 1 5 525 150
9 9 0 1 0 3 王 丹 女 8 1 / 0 3 / 2 6 624 120
9 9 0 1 0 6 陈小刚 男 8 2 / 0 8 / 1 6 510 100
9 9 0 1 0 2 赵 辉 男 8 1 / 1 2 / 0 3 600 140
学生登记表
学 号 姓 名 性别 出生日期 入学成绩 奖学金 简历 照片
9 9 0 1 0 1 王亚洲 男 8 0 / 0 5 / 2 4 515 120
9 9 0 1 0 5 白 雪 女 8 1 / 0 6 / 1 8 540 150
9 9 0 1 0 4 李冬梅 女 8 0 / 0 4 / 1 5 525 150
9 9 0 1 0 3 王 丹 女 8 1 / 0 3 / 2 6 624 120
6 陈小刚 男 2 8 1 6 510 100
9 9 0 1 0 2 赵 辉 男 8 1 / 1 2 / 0 3 600 140
C,6 C,8 C,2 D,8 N,6,2 N,3 M,10 G,10
Student.dbf
FoxPro For Windows http://cc.synu.edu.cn 3
定义数据库结构
?库文件名,不超 8个字符
?扩展名,dbf 可以缺省
?不能用单个字母 a --j
a,最多 255个字段。
b.按 Tab键或用鼠标移至下一列。
c,Insert与 Delete可对字段增删。
d,光标移动修改处,修改。
e.定义结束:保存 OK或按 Ctrl+W键,不保存 Cancel或按 Esc键。
系统自动赋予扩展名(,dbf)。
FoxPro For Windows http://cc.synu.edu.cn 4
OK 输入数据库记录
?每字段占一行,不足字段宽度
时,按回车键光标下移。
?日期型数据:与系统格式一致。
?逻辑型数据,y,N,T,F
?备注型数据:双击 memo进入
编辑窗口,输入结束时按 Ctrl
+W,Memo的第一个字母变
为大写。
?通用型数据:通过剪贴版
?重复记录内容的输入
SET CARRY ON | OFF
&&ON复制; OFF不复制
SET CARRY TO [<字段名表 >]
&&设臵重复字段
FoxPro For Windows http://cc.synu.edu.cn 5
.dbf数据库文件,fpt备注文件
关于备注型和通用型字段
文
本照
片
依附关系?
FoxPro For Windows http://cc.synu.edu.cn 6
数据库文件保存
? 存盘且返回命令窗口,
光标位于新记录第一个字段首字符时按回车键
或 Ctrl+W
或从当前窗口的控制菜单中选择 Close项
? 放弃本次存盘:按 Esc 或 Ctrl+Q
FoxPro For Windows http://cc.synu.edu.cn 7
数据库保存到哪??
? 默认情况下,数据库文件保存在 c:\foxprow下
可用 dir 命令察看,可以使用命令改变存放位臵:
create d:\student
create d:\may\aaa.dbf
copy to a:\student.dbf 注意:写全名,即带扩展名
? 改变系统默认的工作路径
Set default to [<盘符 +文件夹名 >]
set default to d:\abc
set default to a:\我的文件
单独使用 set default to恢复默认路径
FoxPro For Windows http://cc.synu.edu.cn 8
数据库文件的打开和关闭
数据库操作之前必须打开,用后关闭 。
命令方式:
Use [<file name> |?]
use d:\student
? 如知道数据库的位臵和名字,可以直接打开数据库。
? 如果不知道,可使用 use?打开一个对话框,从中做选择。
? 单独使用 use 关闭数据库
菜单方式,File→Open→选择文件名 →单击 Open
FoxPro For Windows http://cc.synu.edu.cn 9
数据库的基本操作
浏
览
LIST 显示所有内容,指针移到最后记录号加 1
DISPLAY 显示当前记录,指针不动,DISPLAY ALL= LIST
DISPLAY | LIST STRUCTURE 显示数据库的结构
LIST FOR score >600 FOR 后面是逻辑表达式,显示符合条件记录
LIST FOR score >600,and,Sex=‘男’
LIST WHILE score >600 遇到第1个不满足条件记录终止操作。
LIST WHILE Sex=‘男’
LIST FIELDS sno,name,score/7 指定输出的字段或一个表达式。
12
34
56
FoxPro For Windows http://cc.synu.edu.cn 10
OFF,每个记录前不输出记录号 。
record# sno name
1 990303 tom
USE XSK
DISP
DISP OFF sno name990303 tom
SET HEADING OFF 990303 tom
SET HEADING ON|OFF 命令的作用是控制在显示数据
库的内容时显示不显示字段的名字。 默认 ON为显示,设
臵 OFF为不显示。
FoxPro For Windows http://cc.synu.edu.cn 11
总结,FoxPro命令的基本结构
命令一般是由命令动词和动词短语构成 。
动词短语又由若干子句构成 。
<命令动词 > [<scope>] [FOR <expL>] [WHILE <expL>] [[FIELDS]
<field list>] [OFF][TO PRINTER]
[例 ] list for 性别 =‘男 ’ next 10 姓名,学号,成绩
说明:
<>必选
[]任选
Expl表达式
?命令动词表示进行的操作 如,list,disp,copy
? For(满足条件执行)或 while(不满足条件停止执行)
? Scope 限定数据操作的范围
可选择 record <n> 特指记录 n,all 全部记录
next <n> 从当前开始连续 n个记录(包括当前)
rest 从当前开始到文件结束的所有记录。
? Fields 命令涉及的字段表 (disp,list中可省略)
FoxPro For Windows http://cc.synu.edu.cn 12
总结,FoxPro命令书写规则
? 必须以命令动词开始,其后子句根据需要选用,顺序任意;
? 命令行中命令动词、子句间必须隔以一个或多个空格 ;
? 一行只能写一条命令,命令行长度不超过 2048个字符;一
行写不下,键入续行符(半角分号“;”)并在下一行续
写;最后一行用硬回车结束;
? 除常量字符串中的字符外,字母的大小写没有区别;
? 命令动词和关键字可以缩写为前 4个字母 (至少 4个 )。如:
CREATE可以写成 CREA,CREAT,但不能写成 CRE。
[例 ]disp for sno=‘990105’
list next 2
FoxPro For Windows http://cc.synu.edu.cn 13
DISPLAY,LIST辨析:
DISPLAY LIST
显 示:分屏显示 滚屏显示
无参数:显示当前记录 显示所有记录,指针指向库底 eof()为,t.
指 针:不移动 移动
[例 ]数据库中有 7条记录
USE STUDENT
RECNO() &&当前记录号 1
DISP &&显示记录 1的信息
? RECNO() &&当前记录号 1
LIST &&显示所有的记录
? RECNO() &&当前记录号 8
相关函数:返回记录号函数 RECNO()? RECNO()
输出命令:? <表达式 > 换行输出表达式的结果
FoxPro For Windows http://cc.synu.edu.cn 14
SET FILTER TO [<expL>]
暂时隐蔽不符合条件的记录,操作只对符合条件的记录。
? <expL>是过滤的条件,无此选项时取消过滤。
? 一个库中只能设臵一个过滤,再次执行 SET FILTER命令,
上一次命令无效。
[例 ] STUDENT.DBF中有 6个记录,执行下面的命令:
USE student
SET FILTER TO sex="男 "
LIST &&只显示 3个男生记录
SET FILTER TO score>=600
LIST &&只显示 2个学生的记录
记
录
过
滤
FoxPro For Windows http://cc.synu.edu.cn 15
? 数据指针 ---指向当前操作纪录的指针。
? 记录号即记录输入的先后顺序,为 1,2,…… 等。
? 数据库刚打开时,指针指向第一条纪录。记录号为 1。
? 数据库中第一条纪录(首记录)的前面有一个数据文件头位 BOF,
最后一条纪录(末记录)的后面有一个数据文件尾位 EOF。
? 用数据指针移动命令来移动数据指针,指向待操作的记录后才能对
记录操作。
指
针
定
位
GO RECORD 5
GOTO RECORD 5
GO 5
GOTO 5
5 指针定位到第 5条记录
GO TOP
记录指针定位到首记录
record=1
GO BOTTOM
记录指针定位到末记录
record=N
SKIP [<expN>]
以当前记录为基准,向下或向上移动记录。
最后记录号为当前记录号与 <expN>代数和。
SKIP等价于 SKIP 1。
[例 ] go 5
Recno()
skip 2
Recno()
skip –3
Recno() 绝对与相对定位
FoxPro For Windows http://cc.synu.edu.cn 16
文件头测试函数 BOF()
指针指向文件头,既指向第一个记录时,再执行 SKIP –1。
BOF()值为真 (.T.),RECNO()值为 1。
文件尾测试函数 EOF()
指针指向文件尾,既指针指向最后一个记录时,执行 SKIP,
EOF()值为真 (.T.), RECNO()的返回值为库文件最大记录号加 1。
GO TOP
RECNO(),BOF() && 1,F.
SKIP -1
RECNO(),BOF() && 1,T.
GO BOTT
RECNO(),EOF() && 6,F,共 6条
SKIP
RECNO(),EOF() && 7,T.
相关函数:
Bof()
Eof()
1
1
6
7
FoxPro For Windows http://cc.synu.edu.cn 17
[例 ]查找库中所有入学成绩大于 500分的女同学的信息
LOCATE FOR score>500,AND,sex="女 "
DISPLAY
CONTINUE
条件定位
?LOCATE命令按 FOR子句指明的条件 顺序查找 每一个记录,如果
找到符合条件的记录(,T.),则将记录指针定位于此记录。
?如果数据库中有多个符合条件的记录,可用 CONTINUE命令继续
查找其他符合条件的记录。
?一个 LOCATE命令可跟多个 CONTINUE命令,直到对数据库的定
位结束为止。
FoxPro For Windows http://cc.synu.edu.cn 18
[例 ] Go 3
Sno sno为字段变量,显示字段内容
Skip 3
Score/6
Skip –2
Birthday
Loca for score =525
disp
1
2
3
4
5
6
FoxPro For Windows http://cc.synu.edu.cn 19
命令, MODI STRU
先打开数据库
? 可增加、删除字段,修改字段名,类型、宽度等;
? 宽度变小,数据可能丢失。
结
构
修
改
记
录
浏
览
并
修
改
浏览操作:
?↑,↓,←,→,PgDn,PgUp或拖动滚动条移动光标;
?Tab键右移下一字段,Shift+Tab键左移至前一个字段;
?可编辑修改记录;
? Ctrl +N 可追加记录
?双击 memo或 gen(或按 Ctrl+PgDn)可浏览备注型字段。
BROWSE
BROWSE FOR score >600
brow fields 学号
CHANGE或 EDIT 编辑命令
FoxPro For Windows http://cc.synu.edu.cn 20
实验:
建立数据库并下课后保存到软盘
COPY TO A:\student1.dbf
练习数据库的基本操作
LIST DISP BROW
GO GO TO SKIP LOCA--CONT
MODI STRU
第 2讲 建立数据库及基本操作
创建数据库
数据库文件的打开和关闭
数据库的浏览
数据库记录的过滤
数据库指针定位
数据库修改
FoxPro For Windows http://cc.synu.edu.cn 2
定义数据库结构流程
定义结束
Ctrl+W或 OK存 盘
Ctri+Q或Cancel取 消
定义结构
字段名(如,name)
字段类型(C)
字段宽度(8)
create student
创建数据库
两步:
首先定义数据库结构,
然后输入数据库记录,
学生登记表
学 号 姓 名 性别 出生日期 入学成绩 奖学金 简历 照片
9 9 0 1 0 1 王亚洲 男 8 0 / 0 5 / 2 4 515 120
9 9 0 1 0 5 白 雪 女 8 1 / 0 6 / 1 8 540 150
9 9 0 1 0 4 李冬梅 女 8 0 / 0 4 / 1 5 525 150
9 9 0 1 0 3 王 丹 女 8 1 / 0 3 / 2 6 624 120
9 9 0 1 0 6 陈小刚 男 8 2 / 0 8 / 1 6 510 100
9 9 0 1 0 2 赵 辉 男 8 1 / 1 2 / 0 3 600 140
学生登记表
学 号 姓 名 性别 出生日期 入学成绩 奖学金 简历 照片
9 9 0 1 0 1 王亚洲 男 8 0 / 0 5 / 2 4 515 120
9 9 0 1 0 5 白 雪 女 8 1 / 0 6 / 1 8 540 150
9 9 0 1 0 4 李冬梅 女 8 0 / 0 4 / 1 5 525 150
9 9 0 1 0 3 王 丹 女 8 1 / 0 3 / 2 6 624 120
6 陈小刚 男 2 8 1 6 510 100
9 9 0 1 0 2 赵 辉 男 8 1 / 1 2 / 0 3 600 140
C,6 C,8 C,2 D,8 N,6,2 N,3 M,10 G,10
Student.dbf
FoxPro For Windows http://cc.synu.edu.cn 3
定义数据库结构
?库文件名,不超 8个字符
?扩展名,dbf 可以缺省
?不能用单个字母 a --j
a,最多 255个字段。
b.按 Tab键或用鼠标移至下一列。
c,Insert与 Delete可对字段增删。
d,光标移动修改处,修改。
e.定义结束:保存 OK或按 Ctrl+W键,不保存 Cancel或按 Esc键。
系统自动赋予扩展名(,dbf)。
FoxPro For Windows http://cc.synu.edu.cn 4
OK 输入数据库记录
?每字段占一行,不足字段宽度
时,按回车键光标下移。
?日期型数据:与系统格式一致。
?逻辑型数据,y,N,T,F
?备注型数据:双击 memo进入
编辑窗口,输入结束时按 Ctrl
+W,Memo的第一个字母变
为大写。
?通用型数据:通过剪贴版
?重复记录内容的输入
SET CARRY ON | OFF
&&ON复制; OFF不复制
SET CARRY TO [<字段名表 >]
&&设臵重复字段
FoxPro For Windows http://cc.synu.edu.cn 5
.dbf数据库文件,fpt备注文件
关于备注型和通用型字段
文
本照
片
依附关系?
FoxPro For Windows http://cc.synu.edu.cn 6
数据库文件保存
? 存盘且返回命令窗口,
光标位于新记录第一个字段首字符时按回车键
或 Ctrl+W
或从当前窗口的控制菜单中选择 Close项
? 放弃本次存盘:按 Esc 或 Ctrl+Q
FoxPro For Windows http://cc.synu.edu.cn 7
数据库保存到哪??
? 默认情况下,数据库文件保存在 c:\foxprow下
可用 dir 命令察看,可以使用命令改变存放位臵:
create d:\student
create d:\may\aaa.dbf
copy to a:\student.dbf 注意:写全名,即带扩展名
? 改变系统默认的工作路径
Set default to [<盘符 +文件夹名 >]
set default to d:\abc
set default to a:\我的文件
单独使用 set default to恢复默认路径
FoxPro For Windows http://cc.synu.edu.cn 8
数据库文件的打开和关闭
数据库操作之前必须打开,用后关闭 。
命令方式:
Use [<file name> |?]
use d:\student
? 如知道数据库的位臵和名字,可以直接打开数据库。
? 如果不知道,可使用 use?打开一个对话框,从中做选择。
? 单独使用 use 关闭数据库
菜单方式,File→Open→选择文件名 →单击 Open
FoxPro For Windows http://cc.synu.edu.cn 9
数据库的基本操作
浏
览
LIST 显示所有内容,指针移到最后记录号加 1
DISPLAY 显示当前记录,指针不动,DISPLAY ALL= LIST
DISPLAY | LIST STRUCTURE 显示数据库的结构
LIST FOR score >600 FOR 后面是逻辑表达式,显示符合条件记录
LIST FOR score >600,and,Sex=‘男’
LIST WHILE score >600 遇到第1个不满足条件记录终止操作。
LIST WHILE Sex=‘男’
LIST FIELDS sno,name,score/7 指定输出的字段或一个表达式。
12
34
56
FoxPro For Windows http://cc.synu.edu.cn 10
OFF,每个记录前不输出记录号 。
record# sno name
1 990303 tom
USE XSK
DISP
DISP OFF sno name990303 tom
SET HEADING OFF 990303 tom
SET HEADING ON|OFF 命令的作用是控制在显示数据
库的内容时显示不显示字段的名字。 默认 ON为显示,设
臵 OFF为不显示。
FoxPro For Windows http://cc.synu.edu.cn 11
总结,FoxPro命令的基本结构
命令一般是由命令动词和动词短语构成 。
动词短语又由若干子句构成 。
<命令动词 > [<scope>] [FOR <expL>] [WHILE <expL>] [[FIELDS]
<field list>] [OFF][TO PRINTER]
[例 ] list for 性别 =‘男 ’ next 10 姓名,学号,成绩
说明:
<>必选
[]任选
Expl表达式
?命令动词表示进行的操作 如,list,disp,copy
? For(满足条件执行)或 while(不满足条件停止执行)
? Scope 限定数据操作的范围
可选择 record <n> 特指记录 n,all 全部记录
next <n> 从当前开始连续 n个记录(包括当前)
rest 从当前开始到文件结束的所有记录。
? Fields 命令涉及的字段表 (disp,list中可省略)
FoxPro For Windows http://cc.synu.edu.cn 12
总结,FoxPro命令书写规则
? 必须以命令动词开始,其后子句根据需要选用,顺序任意;
? 命令行中命令动词、子句间必须隔以一个或多个空格 ;
? 一行只能写一条命令,命令行长度不超过 2048个字符;一
行写不下,键入续行符(半角分号“;”)并在下一行续
写;最后一行用硬回车结束;
? 除常量字符串中的字符外,字母的大小写没有区别;
? 命令动词和关键字可以缩写为前 4个字母 (至少 4个 )。如:
CREATE可以写成 CREA,CREAT,但不能写成 CRE。
[例 ]disp for sno=‘990105’
list next 2
FoxPro For Windows http://cc.synu.edu.cn 13
DISPLAY,LIST辨析:
DISPLAY LIST
显 示:分屏显示 滚屏显示
无参数:显示当前记录 显示所有记录,指针指向库底 eof()为,t.
指 针:不移动 移动
[例 ]数据库中有 7条记录
USE STUDENT
RECNO() &&当前记录号 1
DISP &&显示记录 1的信息
? RECNO() &&当前记录号 1
LIST &&显示所有的记录
? RECNO() &&当前记录号 8
相关函数:返回记录号函数 RECNO()? RECNO()
输出命令:? <表达式 > 换行输出表达式的结果
FoxPro For Windows http://cc.synu.edu.cn 14
SET FILTER TO [<expL>]
暂时隐蔽不符合条件的记录,操作只对符合条件的记录。
? <expL>是过滤的条件,无此选项时取消过滤。
? 一个库中只能设臵一个过滤,再次执行 SET FILTER命令,
上一次命令无效。
[例 ] STUDENT.DBF中有 6个记录,执行下面的命令:
USE student
SET FILTER TO sex="男 "
LIST &&只显示 3个男生记录
SET FILTER TO score>=600
LIST &&只显示 2个学生的记录
记
录
过
滤
FoxPro For Windows http://cc.synu.edu.cn 15
? 数据指针 ---指向当前操作纪录的指针。
? 记录号即记录输入的先后顺序,为 1,2,…… 等。
? 数据库刚打开时,指针指向第一条纪录。记录号为 1。
? 数据库中第一条纪录(首记录)的前面有一个数据文件头位 BOF,
最后一条纪录(末记录)的后面有一个数据文件尾位 EOF。
? 用数据指针移动命令来移动数据指针,指向待操作的记录后才能对
记录操作。
指
针
定
位
GO RECORD 5
GOTO RECORD 5
GO 5
GOTO 5
5 指针定位到第 5条记录
GO TOP
记录指针定位到首记录
record=1
GO BOTTOM
记录指针定位到末记录
record=N
SKIP [<expN>]
以当前记录为基准,向下或向上移动记录。
最后记录号为当前记录号与 <expN>代数和。
SKIP等价于 SKIP 1。
[例 ] go 5
Recno()
skip 2
Recno()
skip –3
Recno() 绝对与相对定位
FoxPro For Windows http://cc.synu.edu.cn 16
文件头测试函数 BOF()
指针指向文件头,既指向第一个记录时,再执行 SKIP –1。
BOF()值为真 (.T.),RECNO()值为 1。
文件尾测试函数 EOF()
指针指向文件尾,既指针指向最后一个记录时,执行 SKIP,
EOF()值为真 (.T.), RECNO()的返回值为库文件最大记录号加 1。
GO TOP
RECNO(),BOF() && 1,F.
SKIP -1
RECNO(),BOF() && 1,T.
GO BOTT
RECNO(),EOF() && 6,F,共 6条
SKIP
RECNO(),EOF() && 7,T.
相关函数:
Bof()
Eof()
1
1
6
7
FoxPro For Windows http://cc.synu.edu.cn 17
[例 ]查找库中所有入学成绩大于 500分的女同学的信息
LOCATE FOR score>500,AND,sex="女 "
DISPLAY
CONTINUE
条件定位
?LOCATE命令按 FOR子句指明的条件 顺序查找 每一个记录,如果
找到符合条件的记录(,T.),则将记录指针定位于此记录。
?如果数据库中有多个符合条件的记录,可用 CONTINUE命令继续
查找其他符合条件的记录。
?一个 LOCATE命令可跟多个 CONTINUE命令,直到对数据库的定
位结束为止。
FoxPro For Windows http://cc.synu.edu.cn 18
[例 ] Go 3
Sno sno为字段变量,显示字段内容
Skip 3
Score/6
Skip –2
Birthday
Loca for score =525
disp
1
2
3
4
5
6
FoxPro For Windows http://cc.synu.edu.cn 19
命令, MODI STRU
先打开数据库
? 可增加、删除字段,修改字段名,类型、宽度等;
? 宽度变小,数据可能丢失。
结
构
修
改
记
录
浏
览
并
修
改
浏览操作:
?↑,↓,←,→,PgDn,PgUp或拖动滚动条移动光标;
?Tab键右移下一字段,Shift+Tab键左移至前一个字段;
?可编辑修改记录;
? Ctrl +N 可追加记录
?双击 memo或 gen(或按 Ctrl+PgDn)可浏览备注型字段。
BROWSE
BROWSE FOR score >600
brow fields 学号
CHANGE或 EDIT 编辑命令
FoxPro For Windows http://cc.synu.edu.cn 20
实验:
建立数据库并下课后保存到软盘
COPY TO A:\student1.dbf
练习数据库的基本操作
LIST DISP BROW
GO GO TO SKIP LOCA--CONT
MODI STRU