第一章 数据库系统基本概念
1.数据管理技术的三个阶段:
自由管理阶段——文件管理阶段——数据库阶段
2.数据库系统的组成:
数据库、支持数据库运行的软硬件、数据库管理系统和应用程序等部分组成。
3.数据库系统的三级组织结构:概念模式、内模式、外模式
三者之间的映射:外模式/模式、模式/内模式
4.英文含义:
DBMS:数据库管理系统
DBA: 数据库管理员
DDL: 数据描述语言
DML: 数据操纵语言
UWA: 用户工作区
DD: 数据字典
#p#
第二章 数据模型
1.数据模型的概念:数据库的数据结构形式,一一种形式化地描述数据及数据之间的联系方法。
2.数据模型的表示方法:DM={R,L} 其中R代表记录类型的集合;L代表不同记录类型联系的集合。
3.实体:实际存在的东西或是概念性的东西或是事物与事物之间的联系。
属性:实体所具有的性质
“型”与“值”之分:型是概念的内涵,表达的是个体的共性。而值是概念的实例,表达的是个体具体内容。
“域”:实体中的每个属性,都有一个取值范围,这叫作属性的“域”。
“键”:在实体属性中,可用于区别实体集中不同个体的哪个属性或几个属性的组合,考试#大提示称为该实体的“键”。
4.实体间的联系方式:一对一(1:1),一对多(1:N),多对多(M:N)
5.实体联系表示法(E-R方法)
6.数据库类型:层次模型,网状模型,关系模型(用关系表示实体及其联系)。
7.人们通过一个中间步骤,先用E-R图反映实体及其联系,再从E-R图出发结合具体数据模型进行转换,从E-R图转换为关系模型的基本原则在设计关系数据库时是很有用的。
#p#
第三章 关系数据库理论基础
1.表示关系定义: 域D1={男,女},表示性别的集合,域中数据个数叫基数。即D1的基数为2.
2.表示关系定义: 笛卡尔积
3.关系对应的二维表中,行对应元组,列对应域。 在FOXPRO中把关系叫做“数据库文件”或“表”,把属性叫做“字段”,元组叫做“记录”。
4.集合运算符:U(并),n(交),——(差),X(笛卡尔积)
关系运算符:投影,选择,连接
比较运算符:<,>
逻辑运算符:——(非),∧(与),∨(或)。
#p#
第四章 数据库应用系统的设计
1.数据库设计的内容:结构特性设计和行为特性设计
2.数据库逻辑设计的步骤:
(1)收集和分析用户要求 数据及其流动方向(箭头),对数据的加工(圆形),文件(卡片),源点和终点(方框) “由外向内,自顶而下”
(2)建立E-R模型
(3)数据库模式设计
3.数据库设计方法称为:视图设计法
#p#
第五章 FoxPro综述
数据库每一记录最大字段数是255,可以同时打开的数据库文件数225 ,内存变量(数组)最大数65000。
1.数据类型:(1)字符型(C-254) (2)数据型(N-20) (3)浮点型(F-20) (4)逻辑型(L-1) (5)日期型(D-8) (6)备注型(M-10) (7)通用型(G-10)
2.常量: (1)字符型 (2)数据型 (3)日期型 (4)逻辑型
3.变量:
(1)字段变量: 字符型, 数据型, 浮点型, 逻辑型, 日期型, 备注型, 通用型
(2)内存变量: 字符型, 数据型, 浮点型, 逻辑型,屏幕型(S)
*当字段变量与内存变量同名时,字段变量优先。但可以通过内存变量名前加上前缀M.或M->来区别。
4.运算符及其优先级
类别 | 符号 | 说明 | 优先级 |
算术运算符 | () +、- **或∧ *、/、% +、- |
括号 正、负号 乘幂 乘除、求余 加、减 |
高 底 |
字符串 运算符 |
+ - |
字符串联接 字符串联接 |
同类优先级相等 |
关系运算符 | 〈 〉 |
小于 大于 |
同类优先级相等 |
逻辑运算符 | () 。NOT。 。AND。 。OR。 |
括号 逻辑非 逻辑与 逻辑或 |
高 底 |
5.命令格式:〈命令名〉[〈表达式表〉][〈范围〉][FOR〈条件〉][WHILE〈条件〉][TO FILE〈文件名〉|TO PRINTER|TO ARRAY〈数组表〉|TO〈内存变量〉]ALL[LIKE|EXCEPT〈通配符〉]][IN〈别名〉]
*范围选择:RECORD N 对第N条记录进行操作
NEXT N 对从当前记录开始的N条记录进行操作
ALL 对所有的记录进行操作
REST 对当前记录开始到文件结束的所有记录进行操作
FOR〈条件〉:对所有满足“条件”的记录进行操作。
WHILE〈条件〉:对直到不满足条件的记录为止的所有已满足条件的记录进行操作。
6.命令的执行方式;1.立即方式 2.程序方式
7.内存变量的赋值:(1)STORE <表达式> TO <内存变量表>
(2)<内存变量>=<表达式>
(3)SAVE SCREEN TO <屏幕型内存变量>
RESTORE SCREEN FROM <屏幕型内存变量>
8.内存变量的释放:(1)RELEASE<内存变量表>
(2)RELEASE ALL [LIKE|EXCEPT<通配符>]
(3)CLEAR MEMORY/CLEAR ALL
9.内存变量文件:(1)内存变量文件的建立
SAVE TO <内存变量文件名>[ALL[LIKE|EXCEPT<通配符>]]
(2)内存变量的恢复
RESTORE FROM<内存变量文件名>[ ADDITIVE]
ADDITIVE没有表示清除当前内存中所有的内存变量,有时表示保留当前内存变量。
(3) 数据类型转换函数
字符型转数值型函数VAL(<字符表达式>)
数值型转字符型函数STR(<数值表达式>)[,<数值表达式2>[.<数值表达式3>]])
字符型转日期型函数CTOD(<字符型表达式>)
日期型转字符型函数DTOC(<日期表达式>[,1])(带“1”表示可以进行索引的日期字符串。)
(4) 测试函数
数据类型测试函数TYPE(<字符表达式>)
测试文件尾函数EOF([<工作区号>|<文件别名>])
测试文件头函数BOF([<工作区号>|<文件别名>])
测试当前记录号函数RECNO([<工作区号>|<文件别名>])
测试库文件记录数函数RECCOUNT([<工作区号>|<文件别名>])
测试查找记录函数FOUND([<工作区号>|<文件别名>])
测试屏幕(打印头)光标坐标函数ROW(PROW)()与COL(PCOL()
#p#
第六章 数据库的基本操作
1. 库文件结构建立CREAT[<文件名>|?]其中A-J作为工作区代码
在把记录输入完后,按CTRL+W或CTRL+END存盘。
2. 追加记录APPEND[BLANK]
3. 记录显示LIST/DISPLAY [<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>][OFF][TO PRINTER/FILE<文件名>]
4. 数据库文件打开USE[<库文件名>/?][ALIAS<别名>]
5. 关闭数据库文件:关闭当前工作区打开的数据库文件USE
关闭当前打开的所有的库文件CLOSE DATABASES
6.数据库文件结构的显示:LIST/DISPLAY STRUCTURE[TO PRINTER/TO FILE<文件名>]
数据库文件结构的修改:MODIFY STRUCTURE*不能同时修改字段名和宽度
6. 指针的移动:
绝对移动(1)GO/GOTO [RECORD]<数值表达式>[IN<工作区号>/<文件别名>]
(2)GO/GOTO TOP/BOTTOM[IN<工作区>/<文件名>]
相对移动SKIP[<数值表达式>][IN<工作区号>/<文件别名>]
7. 插入记录INSERT[BEFORE][BLANK]
8. 删除记录DELETE[<范围>][FOR<条件>][WHILE<条件>]
SET DELETED OFF/ON (取OFF,逻辑删除无效,反之,则有效)
恢复逻辑删除RECALL[<范围>][FOR<条件>][WHILE<条件>]
物理删除PACK
物理删除所有记录ZAP(只有结构无记录)
9. 记录的修改:
编辑修改EDIT.CHANG [<范围>][FIELDS<字段名表>[条件]
浏览编辑修改BROWSE
替换修改REPLACE[<范围>]<字段1>WITH<表达式1>……
10. 数据库文件的排序与索引
排序:SORT TO <文件名>ON<字段1>[/A][/C][/D][,<字段2>………[FIELDS<字段名表>][FOR……
*关键字只能是C,N,D. */A(升序,默认)/D(降序) /C(不区分大/小写)
*需要临时文件做周转
索引:INDEX ON<关键字表达式>TO<索引文件名>[FOR……][UNIQUE][ADD…]
*备注字段不能作为关键字
*字段索引只能是C,N,D,多字段索引只能是C
*UNIQUE进行唯一索引(在记录相同,只取第一个)
*未指定ADDITIVE,关闭先打开的索引文件,反之,就不关闭。
索引文件的打开USE<库文件名>INDEX<索引文件名表>
(允许打开25个) SET INDEX TO <索引文件名表>
索引文件的关闭SET INDEX TO/CLOSE INDEX
指定主索引SET ORDER TO [<数值表达式>/<索引文件名>]
11. 数据查询:
顺序查询:LOCATE[<范围>[FOR<条件>][WHILE<条件>]它总是把指针定位到第一个满足条件的记录上,想继续查找,则用CONTINUE
索引查询:FIND<字符串>/<数值常数>当设置为SET EXACT OFF时,查询时不需要精确比较,反之,则需要精确比较。
SEEK<表达式>它可以查询包括字符型,数值型,日期型和逻辑型在内的各种数据类型,也可以是内存变量或者是表达式……
12. 数据统计:
计数命令COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量名>]
求和命令SUM[<范围>][<数值表达式>][FOR<条件>][WHILE<条件>][TO<内存变量名>/TO ARRAY<数组>]
求平均值命令AVERAGE[<范围>][<数值表达式>][FOR<条件>][WHILE<条件>][TO<内存变量名>/TO ARRAY<数组>]
分类汇总命令TOTAL ON <关键表达式> TO <分类库文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]要求首先对库文件进行排序或索引
13. 数据库文件的复制
(1) 库文件的复制COPY TO <库文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]将当前库文件中的数据(包括结构)一起复制到指定的库文件中。
(2) 库文件结构的复制COPY STRUCTURE TO <新库文件名>[FIELDS<字段名表>]
(3) 库文件与文本数据文件的转换复制
库文件复制成文本数据文件COPY TO <数据文件名>SDF.DELIMITED[WITH<定界符>/BLABK][<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]
文本数据文件中的数据复制到库文件APPEND FROM<数据文件名> SDF.DELIMITED[WITH<定界符>/BLABK] [FOR<条件>][FIELDS<字段名表>]
(4) 任何类型文件的复制COPY FILE <源文件名> TO <目标文件名>不能复制已经打开的库文件,且<源文件名>,<目标文件名>必须包括主文件名和扩展名。
14. 多重数据库文件的操作
(1) 最多达225个工作区,且前十个工作区1~10还规定了别名A~J.
(2) 工作区选择命令SELECT<工作区号>/<别名>,从当前工作区访问其它工作区打开库文件中的某个字段时,要表示为别名。字段名或者别名->字段名
(3) 库文件之间的关联SET RELATION TO [<关键字表达式>/<数值表达式>INTO<工作区号>/<别名>[ADDITIVE]其中若选<数值表达式>,而被关联库没有建立索引,则作为记录号进行关联。
指定[ADDITIVE]保留以前关联。SET RELATION TO将删除当前工作区与所有其他工作区连接
(4) 库文件的连接JOIN WITH<别名> TO <新库文件名>[FIELDS<字段名表>][FOR<条件>]
(5) 库文件的更新UPDATE ON <关键字段>FROM<别名>REPLACE<字段名1>WITH<表达式1>……[RANDOM]其中
<关键字段>是2个库都有的且都按此建立索引,并且打开,若提供更新的库文件未建立索引,则需使用RANDOM。
#p#
第七章 FoxPro程序设计
1. 命令文件的建立、修改和运行
(1) 命令文件的建立与修改MODIFY COMMAND[<命令文件名>/?][IN WINDOW<窗口名>/SCREEN]
(2) 命令文件的执行DO<命令文件名>
其中SET DEVELOPMENT ON/OFF ,处于ON状态是默认,执行新的版本,处于OFF状态,则执行旧版本。
(3)命令文件的注释NOTE<注释> *<注释> &&<注释>
2. 顺序结构程序设计
(1)CLEAR是清屏命令,SET TALK ON为默认,每执行一条命令就给出回应,RETURN是一条返回命令。
(2)非格式化输入命令
ACCEPT [<字符表达式>] TO <内存变量> 接受从键盘输入的字符型数据,输入的字符串不必用引号括起来。 <字符表达式>只是提示作用。
INPUT[<字符表达式>] TO <内存变量>接受从键盘输入的C,N,D,L等,若是字符串则必须用引号括起来。
WAIT [<字符表达式>] TO <内存变量>等待从键盘输入一个字符, <字符表达式>只能是提示作用。
SET CONSOLE ON(默认,所有非格式化输入数据都显示)/OFF(相反)
(3)格式化输入输出命令
格式化输出命令@<行,列> SAY <表达式>[PICTURE<描述符串>][FONT<字体>[,<字号>]] SET DEVICE TO SCREEN 屏幕输出
SET DEVICE TO PRINT 打印机输出
格式化输入输出命令@<行,列>[SAY<表达式1>]GET<内存变量>|<字段>[PICTURE<描述符串>][RANGE<表达式2>[,<表达式3>]]与READ合用,才能修改变量,一个READ可以修改前面多个@…GET的变量值,通常SAY只是提示作用。
定义文本编辑区
@<行,列>EDIT<内存变量>SIZE<数值表达式1>,<数值表达式2>[FONT<字体>[,<字号>]][SCROLL]通过READ编辑,主要是对备注字段起作用。
清屏命令
CLEAR清除整个屏幕
@<行1,列1)[CLEAR|CLEAR TO <行2,列2>]清除屏幕局部区
3.分支语句IF <条件>
<命令序列1>
[ELSE
<命令序列2>]
ENDIF
多分支选择语句DO CASE
CASE<条件1>
<命令序列1>
CASE<条件2>
<命令序列2>
;
CASE<条件N>
<命令序列N>
[OTHERWISE
<命令序列N+1>]
ENDCASE
4.循环结构程序设计
DO WHILE <条件>
<命令序列1>
[LOOP]
<命令序列2>
[EXIT]
ENDDO
FOR <循环变量> = <初值> TO <终止> [SETEP<步长>]
<命令序列>
[LOOP]
[EXIT]
ENDFOR
SCAN [<范围>][FOR<条件>][WHILE<条件>]
<命令序列>
[LOOP]
[EXIT]
ENDSCAN
5.过程及自定义函数
(1)过程PROCEDURE< 过程名>
[PARAMETERS<形参表>]
<过程体>
RETURN[TO MASTER]
其中[TO MASTER]在嵌套中使用,含有[PARAMETERS<形参表>]为有参过程。
(2)过程文件建立PROCEDURE<过程名1>
<过程体1>
RETURN
…………
过程文件的打开和关闭SET PROCEDURE TO [<过程文件名>]
CLOSE PROCEDURE
(3)过程的调用DO <过程名> [WITH<实参表>]
(4)变量的作用域
全局变量PUBLIC<内存变量表>
局部变量:未经PUBLIC定义的
PRIVATE <内存变量表>
PRIVATE ALL [LIKE<通配符变量名>|EXCEPT<通配符变量名>]隐藏指定的内存变量,避免同名变量
(5)定义自定义函数FUNCTION<函数名>
[PARAMETERS<形参表>]
<函数体>
RETURN<表达式>
自定义函数的调用:函数名([<实参表>])
参数传递方式 SET UDFPARMS TO [VALUE|REFERENCE]若选用VALUE为值传递(默认),不会改变变量的值,若REFERENCE,则为引用方式。
【编辑推荐】