理论基础知识●表:关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于工作单表。
一个数据库可以包含任意多个数据表。
●字段:数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计●记录:表中的每一行称为记录。
一般来说,数据库表中的任意两行都不能相同,如一个学生在数据库中不能登记两次,只能有一个学号●关键字:关键字用来确保表中记录的唯一性,可以是一个字段或多个字段,常用作一个表的索引字段。
每条记录的关键字都是不同的,因而可以唯一地标识一个记录,关键字也称为主关键字,或简称主键。
●索引:索引可以更快地访问数据,索引是表中单列或多列数据的排序列表,每个索引指向其相关的数据表的某一行。
●表间关系:在实际情况中,一个数据库往往都包含多个表,不同类别的数据存放在不同的表中。
表间关系把各个表联接起来,将来自不同表的数据组合在一起●数据库的表之间都会存在3种关系(设有A表与B表):一对一关系(1:1):一个表的一条记录对应另一个表的一条记录。
一对多关系(1:N):一个表的一条记录对应另一个表的多条记录。
多对多关系(M:N):一个表的多条记录对应另一个表的多条记录。
第一个表通常称之为父表(A表),另一个表称之为子表(B表)。
●数据库(DataBase,缩写为DB)就是按一定的组织结构存储在计算机内可共享使用的相关数据的集合。
它以文件的形式组织,包括一个或多个文件,可以被多个用户所共享,它是数据库系统的重要组成部分。
●数据库管理系统(DataBase Management System,缩写为DBMS)是用来建立、存取、管理和维护数据库的软件系统。
它是数据库系统的核心软件。
●数据库系统(DataBase System,缩写为DBS)就是指计算机系统中引用了数据库技术后的完整系统,主要由计算机硬件(主机、键盘、显示器、打印机等)、软件(操作系统、数据库管理系统、开发工具等)、数据库和用户(数据库管理员、终端用户等)四个主要部分组成●数据模型是数据库系统的核心和基础,常见的数据模型有层次模型、网状模型和关系模型三种类型●关系型数据库关系型数据库是把每一个实体看成一个二维表,用二维表来组织和存储数据,它是目前应用广泛的一种数据模型。
每个二维表又称为关系。
关系型数据库管理系统是支持关系模型的数据库管理系统。
关系型数据库管理系统不但提供了数据库管理系统的一般功能,还提供了筛选、投影和连接三种基本的关系操作。
●常用的文件类型有: 数据库(.DBC)、表(.DBF)、项目(.pjx)、表查询(.qpr)、视图、报表(.frx)、标签(.lbx)、程序(.prg)、文本(.txt)、表单(.form)、菜单(.mnx)等。
●输入时,数据必须与字段类型一致,否则系统将不接受。
输入逻辑型字段时,输入的数据应为T、t、F、f、Y、y、N、n这些有效的字符。
输入数字型数据时,输入的应是正负号、数值和小数点。
输入日期型字段时,系统具有10种格式,默认格式为mm/dd/yy,mm表示月份,dd表示日期,yy表示年份,中间的分隔符“/”由系统自动提供,不需要用户输入。
输入通用型字段时,双击gen处或当光标在gen处时按Ctrl+PgDn组合键,此时用户可利用链接和嵌入(OLE)技术编辑该字段内容,选择主菜单中“编辑”→“插入对象”或“粘贴”命令,可以插入各类对象类型。
最后按Ctrl+W组合键存盘返回;按Esc键不保存返回。
输入备注型字段时,双击memo处或当光标在memo处时按Ctrl+pgDn键,即可进入编辑窗口,此时便可输入相应的文字信息。
完成后按Ctrl+W存盘返回;按ESC则放弃存盘返回。
当一条记录输入完成后,自动进入下一条记录输入状态,当所有记录输入完成后,按Ctrl+W组合键即可将输入的数据保存到表文件中。
●常量是在命令或程序中可直接引用、具有具体值的命名数据项,其特征是在整个操作过程中其值和表现形式保持不变。
不同类型的常量有不同的书写格式。
在Visual FoxPro中常量有6种类型:数值型常量、字符型常量、货币型常量、逻辑型常量、日期型常量、日期时间型常量①数值型:由数字、小数点和正负号组成的一个常数。
格式:由数字0~9、小数点和正负号组成。
例如103、-561、15.31、-21092.9854323、1.3E+9。
②字符型:用定界符(单引号、双引号或方括号)括起来的字符串,由任意ASCII字符、汉字和汉字字符组成。
最大长度254个字符格式:用定界符将字符串括起来。
定界符为双引号" "、单引号' '、方括号[ ]。
例如:" I am a boy ",'学生',['md'小组]。
说明:定界符不能作为常量本身的内容。
若某字符本身是常量中的内容,则要用另一种定界符括起来。
定界符必须成对出现。
③货币型:用来表示货币值的大小,其格式是在数值型常量前加一个“$”符号。
格式:$ + 数字0~9、小数点和正负号组成。
例如:$43.56、$19。
④逻辑型:只有真和假两种值,分别用(.t.或.y.)和(.f.或.n.)表示真和假。
格式:.T. .t. .Y. .y.;.F. .f. .N. .n.说明:逻辑常量只有真和假两种值;应在表示逻辑常量的字母左右加注圆点符“.”以示区别,否则会被误认为变量名。
⑤日期型:表示一个确切的日期,用花括号{}作为定界符。
⑥日期时间型。
格式:{ <日期>,<时间> }说明:日期部分同日期型常量。
例如:hh: 时mm: 分ss: 秒a: AM 上午系统默认值p: PM 下午●变量是指在命令操作或程序执行期间其值可以改变的量。
每个变量都用一个变量名来表示。
变量名由字母、汉字、下划线和数字命名,必须以字符或汉字开头。
一般建议不采用汉字命名.Visual FoxPro中变量分为两类:字段变量、内存变量。
(变量名最长254字节)①字段变量:指数据库中的各字段。
各字段中的数据随着记录的不同而变化,因此表文件中字段为字段变量。
避免使用Visual FoxPro的保留字。
②内存变量:是一种独立于数据库之外而存在的变量。
在维护和操作数据库时,经常需要一些内存单元,用来存放一些临时的数据或一些计算结果,这些临时开辟的内存单元就是内存变量。
内存变量可以参与计算处理。
内存变量的常用类型:字符型、数值型、货币型、逻辑型、日期型、日期时间型。
内存变量的赋值:内存变量的赋值操作和其他高级语言一样,必须先定义后使用。
格式一:STORE <表达式> TO <内存变量名表>功能:计算<表达式>的值并赋值给指定的内存变量。
说明:内存变量名之间用逗号分隔。
例如:STORE 23 TO as,ad,af 将数值23赋给变量as,ad,afSTORE "奥运" TO NAME 将字符串"奥运"赋给NAME格式二:<内存变量名>=<表达式>例如:A=.F. 将逻辑假值赋给变量A内存变量的显示输出:格式一:?表达式表格式二:??表达式表功能:依次计算表达式表中各表达式并显示其值。
其中,格式一在下一行显示,格式二在当前光标处显示。
内存变量的清除:格式一:RELEASE 内存变量名表格式二:CLEAR MEMORY功能:格式一清除指定的内存变量;格式二清除所有的内存变量●Visual FoxPro 中主要的数据容器:类型说明变量在随机存储器(RAM) 中的单个数据元素。
(变量名最长254字节)表记录多行预定义字段,每个字段包含一条预定义数据,表存储在磁盘上。
数组随机存储器中的多元素数据。
●数据类型类型示例数值型1233.1415 - 7字符型"Test String""123""01/01/95"逻辑型T..F.日期型日期时间型{^1998-01-01}{^1998-01-01 12:30:00 p}●运算符是对数据对象进行特定加工处理的符号。
根据其处理数据对象的不同,可分为算术运算符、字符运算符、关系运算符和逻辑运算符。
●表达式是由运算符将常量、变量和函数连接起来的运算式子。
根据运算符的种类不同,可将表达式分为算术表达式、字符表达式、关系表达式、逻辑表达式、日期时间表达式①算术表达式(数值表达式)。
组成:由算术运算符、数值常量、变量和函数组成。
运算结果:数值型数据。
例如:25/5+3^2(34-5)*318%4-6x1**2都是算术表达式。
下表所示为算术运算符表②字符表达式。
组成:由字符运算符和字符型常量、变量、函数组成。
运算结果:字符型数据。
运算符:字符型表达式的运算符有3种。
+:字符串完全连接。
将两个字符串首尾连接形成一个新字符串。
-:字符串不完全连接。
将运算符前的字符串尾部空格移到运算符后的字符串尾部,连接形成一个新的字符串。
$:字符串包含运算。
若运算符前的字符串包含在运算符后的字符串中,运算结果为逻辑真;否则,运算结果为逻辑假。
例如:?"北京"+"奥林匹克运动会" 显示:北京奥林匹克运动会?"北京"-"奥林匹克运动会" 显示:北京奥林匹克运动会?'mac' $ 'tucmac' 显示:.T.?'mec' $ 'tucmac' 显示:.F.③关系表达式.组成:由关系运算符与字符表达式、数值或日期表达式组成。
格式:<表达式> <关系运算符> <表达式>④逻辑表达式组成:由逻辑运算符将逻辑型数据连接起来而形成的表达式。
结果:一个逻辑值,即表达式成立则为“真”值,否则为“假”对于各种逻辑运算,其运算规则可由逻辑运算真值表确定,下表所示就是逻辑运算真值表⑤日期时间表达式组成:由日期运算符和日期型常量、变量、函数组成。
运算结果:可以是数值型,也可以是日期型。
运算符:日期型表达式的运算符有两种:“+”和“-”。
运算符(+)日期+数值:结果为其后多少天的日期。
日期时间+数值:结果为其后多少秒的时间。
例如:?{2004/03/01}+5 结果:{2004/03/06}运算符(-)日期-数值:结果为其前多少天的日期。
日期时间-数值:结果为其前多少秒的时间。
日期1-日期2:结果为日期相差的天数。
日期时间1-日期时间2:结果为日期时间相差的秒数。
例如:?{2004/03/06}-5 结果:{2004/03/01}?{2004/03/06}-{2004/03/01}结果:5●运算符优先级:圆括号> 算术和日期运算> 字符串运算> 关系运算>逻辑运算●NULL值表示没有任何值,选择是否允许字段为空。