2023年Vfp专升本讲稿_第1页
2023年Vfp专升本讲稿_第2页
2023年Vfp专升本讲稿_第3页
2023年Vfp专升本讲稿_第4页
2023年Vfp专升本讲稿_第5页
已阅读5页,还剩132页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visualfoxpro数据库管理系统考核内容:数据库基础知识VFP概述数据类型与函数数据库和表的操作程序设计SQL语言的使用表单的设计考试题型:(70分)一、填空题(10分)5个题,共10分,数据库基础部分,前四章的内容二、写出运营结果(24分)8个题,每题3分,都是程序。三、完善程序(24分)8个题,每题3分,共24分,都是程序四、改错(12分)4个题,每题3分,都是程序。判断2-100以内的数是否是质数。求1-100的累加和。求100!打印如下图形:**********或*********第一章VisualFoxpro基础1.1数据库基础知识一、数据、数据解决、信息、数据管理的含义1)数据:是指存储在某一种媒体上能被辨认物理符号。随着信息的发展,数据不再是单纯的数值型,即0-9,正负号。数据已经扩展了,涉及文本、图形、声音、视频等。2)数据解决数据解决是对数据进行收集、加工解决的一个过程。3)信息数据通过加工解决,得到故意义的数据,叫信息。原始数据:出生日期。加工得来的数据:年龄。4)数据管理是指对数据进行收集、加工、整理的一些工作2.数据管理的发展阶段1)手工管理阶段数据和程序都不保存,数据和程序不独立。数据冗余度大。2)文献管理阶段数据以文献方式存储,按文献名来使用数据。程序与数据有一定的独立性,分开存储,数据保存在存储器中。3)数据库阶段程序与数据独立,程序发生变化,数据不变,数据发生变化程序不变。。实现数据共享性,减少数据冗余。数据独立性高,数据与程序分开,互不影响。有专门的数据库管理系统(DBMS)来管理、维护数据库的数据。4)分布式数据库是计算机网络技术和数据库技术的结合的产物。5)面向对象的数据库系统引入了类、对象、方法、属性。二、基本概念1.数据库(DB)是指存储在计算机中的互相关联的结构化的相关数据集合。数据库中不仅存放数据,并且存储数据与数据之间的联系。2)数据库应用系统开发人员运用数据库管理系统开发的面向某一应用的软件系统,比如工资管理系统。3)数据库管理系统(DBMS)是用于管理、维护、建立、使用数据库的系统软件。4)数据库系统(DBS)是一个应用了数据库技术的计算机系统。数据库系统由五大部分构成:硬件系统、数据库集合、数据库管理系统、数据库管理员和用户。DBA:数据库管理员。以上所讲的几部分,包含关系如下:DBS包含DBMS和DB数据库管理系统(dbms)是数据库系统的核心。2.数据库系统的特点1)实现数据共享,减少了数据冗余2)采用特定的数据模型。层次模型、网状模型关系模型。3)具有较高的数据独立性分为物理独立性和逻辑独立性。4)有统一的数据控制功能。数据并发。三、数据模型1.实体的描述1)实体客观存在的可以互相区别事物。实体可以是具体的,也可以是抽象的。例如:一台电脑、一部电话、一次比赛、一次借阅,一次订货2)属性用来描述实体的特性称为属性。用于区别其他事物的特性。学生实体(编号、姓名,班级,性别)这里的属性就是VFP中表的字段。3)实体集和实体型.实体集:同类实体的集合。在VFP中,用表存储实体集。实体型:同类实体所有属性的集合,实体型,在VFP中就是表中所有字段,二维表中的标题。学号姓名性别99001张一男99002李四女99003王东男2.实体之间的联系(实体之间的相应关系)联系的类型如下:1)一对一的联系表达一个实体集中的一个实体,相应另一个实体集中的一个实体,如班级与班长,公司与厂长。2)一对多的联系表达一个实体集中的一个实体,相应另一个实体集中的多个实体。比如:学生和成绩。3)多对多的联系例如:学生和课程学生和教师教师和课程运动员和比赛项目3.数据模型为了反映事物自身及事物之间的各种联系,数据库中的数据必须有一定的结构,这种结构称为数据模型。数据模型不仅表达事物自身的数据,并且表达数据之间的联系。分为三种:1)层次模型系教研室系教研室课程教师特点:除根结点外,每一个结点有且只能有一个父结点。2)网状模型用网状结构来表达实体结构。课程号课程号课程学生教员任课选课特点:网状模型突破了层次模型的两点限制:允许结点有多于一个的父结点,可以有一个以上的结点没有父结点。3)关系模型用二维表格的形式表达实体和实体之间联系的数据模型称为关系模型在关系模型中,操作的对象和结果都是关系,职工号姓名性别001王军女002陈明男特点:关系就是二维表格。1.2关系数据库VFP是一种微机上的32位的关系型数据库管理系统。一、关系术语1)关系:一个关系就是一张二维表,在VFP中存储为一个文献,称为表,扩展名为.dbf。2)元组:二维表中行,元组在VFP的表中叫记录。3)属性:二维表中列。在VFP中叫字段,属性名叫字段名,属性值叫字段值。4)域:属性的取值范围叫域。月份:取值为:1月至12月5)关键字:可以惟一区别其他实体的属性叫关键字。学生(学号,姓名,性别)6)外部关键字:是指在第一表不是关键字,但在第二表中是关键字的。通过外部关键字用来联系两个表的。成绩(学号,课号,成绩)学生(学号,姓名,性别)二.关系的特点1)关系必须规范化,每一列都是不可再分的单元。学号姓名成绩数学语文英语2)同一个关系不能出现同名属性。3)关系中不能出现完全相同的行。4)关系中行与列的顺序随意,没有影响。三、关系的运算重要有两种:1、传统的集合运算(必须有相同的关系模式,即相同结构)并:由属于这两个关系的元组成的集合。差:设有两个相同的元组R和S,R差S的结果是由属于R但不属于S的元组组成的集合。交:设有两个相同的元组R和S,它们的交是由属于R又属于S的元组组成。2、专门的关系运算:1)选择从关系中找出满足条件的元组的操作叫选择。显示学生表中性别为男的所有记录。LISTFOR性别=”男”选择是从行的角度进行的运算,水平方向抽取记录。2)投影从关系中抽取若干个属性组成新的关系的操作。从列的角度而言,垂直分解。比如:查询学生表的学号和姓名。Listfields学号,姓名既有选择又有投影。对于选择在VFP中使用for来限制或while。对于投影在VFP中使用fields操作。Listfields学号,姓名for性别=”男”3)联接是关系的横向结合,联接运算将两个关系模式拼接成一个更宽的模式。生成的新关系中包含满足条件的元组。等值联接:在联接运算中,按照字段值相应相等为条件进行的联接操作称为等值联接。自然联接:去掉反复属性的等值联接(最常用)选择和投影都是对一个关系而言的。联接至少两个联系。比如:学生(学号,姓名)成绩(学号,成绩)生成的表(学号,姓名,成绩)在VFP中有两个联接命令SETRELATIONTO:逻辑联接JOINWITH:物理联接**********补充知识************VFP的命令格式构成:格式如下:命令动词[范围][for/while条件]1)命令动词显示记录:list/display追加记录:append删除记录:delete查询:locate/seek/find插入记录:insert2)范围范围是对记录而言的,。all:表达操作的记录范围为所有记录。所有元组。。nextN:从当前记录开始连续N条记录。。rest:从当前记录开始到尾记录。。recordn表达第N条记录约定:假如省略范围,有FOR,则范围为ALL。3)for/while<条件>此处是选择操作,for和while是条件关键字。For:表达从范围内找满足条件的所有记录。While:表达选择,但碰到一个不满足记录即停止。一般不用。4)其他参数toprint:送到打印机tofile文献名:送到文献中***********************************第二章VFP系统初步一、VFP启动与退出1、启动系统:通过开始菜单程序---MICROSOFTVISUALFOXPRO6.02、退出系统(4种方法)1)用鼠标左键单击VFP标题栏右面的关闭窗口按钮2)从“文献”下拉菜单中选择“退出”3)单击主窗口左上方的狐狸图标,在下拉菜单中选择”关闭”,或者按ALT+F4。4)在命令窗口中键入QUIT(按ENTER键)。二、VFP的窗口构成:1.标题栏2.菜单栏(动态的)3.工具栏:默认界面涉及“常用”、“表单设计器”工具栏。4.状态栏:显示当前打开的数据库和表,当前记录号/总记录数5.内容区:(显示执行结果)6.命令窗口:用于输入命令,命令输入完毕后,按回车键立刻执行命令,1)隐藏命令窗口:(1)单击命令窗口右上角的关闭按钮关闭它。(2)按CTRL+F4隐藏命令窗口2)显示命令窗口(1)单击“常用”工具栏上的“命令窗口”按钮。(2)通过“窗口”菜单下的“命令窗口”选项可以重新打开。(3),按CTRL+F2显示命令窗口7、滚动条三、VFP有三种工作方式:1)菜单方式(交互式)2)命令方式(交互式)3)程序方式四、项目管理器:是VFP中用来组织管理各类文献的容器。是文献、数据、文档和VFP对象的集合,扩展名为.pjx。一、创建项目的两种途径:1)仅创建一个项目文献,用来分类管理其他文献2)使用应用程序向导生成了一个项目和一个VFP应用程序框架二、打开和关闭项目1)打开项目“文献”菜单“打开”文件类型为“项目”----选中要打开的项目--单击“拟定”按钮2)关闭项目单击项目管理器右上角的“关闭”按钮三、项目管理器选项卡:(共有6个)1)数据选项卡:数据库(.DBC)、查询(.QPR)、自由表(.DBF)、视图等。2)文档选项卡:表单(.SCX)、报表(.FRX)、标签(.LBL)3)代码选项卡:程序(.PRG),api库,应用程序(.app)4)类选项卡:类文献(.VCX)5)其他选项卡:菜单文献、图片文献、其他文献6)所有:以上各类文献的集中显示。四、项目管理器基本操作(第8页)1)在项目中创建文献:选择要新建文献类型,再单击“新建”按钮2)在项目中加入文献:选择要添加文献的类型,再单击“添加”按钮3)在项目中修改文献:先选择要修改的文献,再单击“修改”按钮4)在项目中移去文献:选择要移去的文献,再单击“移去”按钮,文献会从项目中移去,但不会从磁盘中删除文献,或按“删出”按钮,文献会从项目中移去并从磁盘中删除文献5)为文献添加说明在“项目管理器”中选定文献,从“项目”菜单中选择“编辑说明”,在编辑说明对话框中键入对文献的说明,单击“拟定”按钮。6)查看表中的数据从项目中可以浏览项目中表的内容。若要浏览表,选择“数据”选项卡,选定一个表并单击“浏览”按钮。五、项目管理器的命令按钮(不可用时是灰色)1.新建:创建一个新文献或对象2.添加:把已有的对象添加到项目中3.修改:在合适的设计器中打开选定项4.浏览:在浏览窗口中打开一个表5.关闭:关闭一个打开的数据库6.打开:打开一个数据库7.移去:从项目中移去选定文献或对象8.连编:编译一个项目或应用程序9.预览:在打印方式下显示选定的报表或标签。10.运营:执行选定的查询、表单或程序六、定制项目(改变项目的外观)1)移动、缩放、折叠(项目管理器上右上角的向上箭头)2)拆分项目管理器-先折叠项目管理器拖出选项卡3)停放项目管理器将项目管理器拖到VFP主窗口的上部就可以像工具栏同样显示在主窗口的顶部。五、Vfp中常用的文献扩展名.pjx:项目文献.pjt:项目备注文献.dbf:表文献.fpt:表备注文献.dbc:数据库文献.dct:数据库备注文献.dcx:数据库索引文献.frx:报表文献.frt:报表备注文献.scx:表单文献.sct:表单备注文献.lbx:标签文献.lbt:标签备注文献.qpr:查询文献.mnx:菜单源文献.mnt:菜单的备注文献.mpr:菜单生成文献.prg:程序文献.app:生成的应用程序文献.exe:可执行文献*******总结***********************:一、数据管理的发展1.手工管理2.文献管理3.数据库管理4.分布式数据库5.面向对象数据库二、数据库管理系统1.数据库2.数据库应用系统3.数据库管理系统4.数据库系统DB,DBMS,DBS三、数据库管理系统的特点1.数据共享,减少了数据冗余2.数据独立性高3.数据模型4.具有统一的控制管理功能四、数据模型1.实体2.属性3.实体集,实体型4.实体与实体之间联系一对一,一对多,多对多。5.数据模型(分为三种)层次模型,。网状模型,关系模型。五、关系模型1.关系2.元组3.属性4.域5.关键字6.外部关键字7.关系的特点六、关系运算分为两种:传统的集合运算:并、并、差、除专门的关系运算选择,对行操作,for投影,对列操作,fields联接,两个表,横向扩展,join和setrelation七、VFP启动与退出退出有4种方法八、VFP窗口的构成标题栏、菜单栏(动态)、工具栏、状态栏、命令窗口(ctrl+f2、ctrl+f4)、显示区、滚动条九、VFP有三种工作方式:菜单方式、命令方式、程序方式十、项目管理器(.pjx)创建、打开、关闭、6个选项卡、项目管理器基本操作、命令按钮、定制项目。第三章数据与数据运算在解决数据时,除了需要表中的数据外,还经常要解决其他数据,根据解决数据的形式来划分,数据可以分为四种形式:常量、变量、表达式、函数(一)、常量(6种):在程序运营中其值不发生变化的量。数值型常量:用来表达一个数的大小,由数字0~9、小数点和正负号组成。例:12、23.56、-6.78注:在内存中用8个字节表达,表达很大或很小数时用科学记数法表达,例:5.678E12表达5.678×1012,1.6E-12表达1.6×10-12货币型常量用来表达货币值,其书写格式与数值型常量类似,但要加一个前置的符号“$”,采用4位小数,多于4位小数将四舍五入。没有科学记数法形式,在内存中占用8个字节例:$2423.5454字符型常量常称为字符串,表达方法是用半角单引号、双引号、方括号作为定界符把字符串扩起来,定界符必须成对匹配,假如定界符自身也是字符串的内容,则需要用另一种定界符为该字符串定界。注:不包含任何字符的字符串("")叫空串。与包含空格的字符串("")不同。?"计算","123",[456],['ABC'"123"]执行结果:计算123456'ABC'"123"??"学习",[表达方法]学习表达方法?----在光标的下一行显示??---在光标所在的当前行显示?123??“5667”1235667日期型常量定界符是一对花括号,花括号内涉及年、月、日三部分,各部分用分隔符分隔。分隔符可以是斜杠(/)连字号(—)、句点(.)和空格,斜杠是系统默认的分隔符。两种格式1)、传统的日期格式默认格式为美国日期格式“MM/DD/YY(月/日/年),传统日期格式中的月、日各为2位数字,而年份可以是2位数字,也可以是4位数字。{10/08/1978}、{10-08-1978}、{100878}注:此格式受命令SETDATETO和SETCENTURYTO设立的影响。只能在SETSTRICTDATETO0状态下使用。2)、严格的日期格式{^YYYY-MM-DD},能表达一个确切的日期,不受SETDATE等语句的影响,年月日的顺序不能颠倒,不能缺省,日期型用8个字节表达,取值范围{^0001-01-01}~{^9999-12-31},可以在SETSTRICTDATETO命令的任何状态下使用。{^2023-11-13}3)影响日期格式的设立命令(1)命令格式:SETMARKTO[日期分隔符]功能:用于设立日期型数据的分隔符,若省略“日期分隔符“表达用默认的斜杠分隔符。Setmarkto“”Setdate“mdy”?{^2023-10-20}10/20/2023命令格式:SETDATE[TO]AMERICAN|ANSI|YMD…功能:设立日期的显示格式Setmarkto?{^2023-10-20}(3)设立日期是否显示4位年份命令格式:SETCENTURYON/OFF[TO世纪值][ROLLOVER[年份参照值]]功能:用于设立显示日期型数据时是否显示世纪。TO选项:拟定用2位数字表达年份所处的世纪。ROLLOVER:假如该日期的2位数字年份大于等于[年份参照值],则它们所处的世纪即为[世纪值],否则为[世纪值]+1Setcenton?{10/20/98}10/20/1998Setcentto19roll60?{10/20/98},{10/20/50},{10/20/60}10/20/199810/20/205010/20/1960(4)命令格式:SETSTRICTDATETO[0|1|2]功能:用于设立是否对日期格式进行检查。0:不进行严格的日期格式检查1:进行严格的日期检查,是系统默认的设立2:进行严格的日期检查,并且对CTOD()和CTOT()函数的格式也有效日期时间型常量涉及日期和时间两部分内容{日期,时间}<日期>部分与日期型常量相似<时间>格式为[HH[:MM[:SS]][A|P]]HH-小时MM-分SS-秒,默认值为12:00:00,A/AM-上午,P/PM-下午,时间的的取值范围是:00:00:00AM~11:59:59PM?{^2023-03-22,11:30P},{^1999-01-01,},{^2023-10-10,3}逻辑型常量只有逻辑真和逻辑假两个值,逻辑真有.T.,.t.,.Y.,.y.逻辑假有.F.,.f.,.N.,.n.(二)变量:在程序运营过程中其值可以发生变化的量每个变量都有一个名字,以字母、汉字、下划线开头,其余字符任意。(DF3,副12、_SFGF)1、变量的数据类型:字符型(C)、数值型(N)、货币型(Y)、逻型(L)、日期型(D)、日期时间型(T)2、变量的种类(字段变量、内存变量)字段变量:表中的每个字段对不同记录相应不同的的值,因此字段名是变量,只有表打开时,才干使用。内存变量:(简朴内存变量、数组变量)简朴内存变量:每一个变量都有一个名字(以字母,汉字,下划线开头)假如内存变量与字段变量同名时,访问内存变量时,必须在变量名前加前缀M.(或M->),否则系统访问同名的字段变量.1、内存变量的建立(不必事先定义,可直接建立)命令格式1)<内存变量名>=<表达式>一次只能给一个变量赋值。A=12B=”a12”2)STORE〈表达式〉TO〈内存变量名表〉一次可以给多个变量赋同一个值。STORE23TOA,B,CSTORE.T.TOAB,BC注:内存变量类型是由变量值的类型拟定的。2、数组变量是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可以通过下标来访问,每个数组元素相称一个简朴变量,可以给各个元素赋值,且各个元素的数据类型可以不同。创建数组(使用前必须先定义)DIMENSION<数组名>(下标1[,下标2][,。。。。])DECLARE<数组名>(下标1[,下标2][,。。。。])创建后系统自动为每个数组元素赋以逻辑假.F.例:一维数组X具有5个元素:X(1)、X(2),X(3),X(4),X(5)二维数组Y具有6个元素y(2,3):Y(1,1)、Y(1,2),Y(1,3)、Y(2,1),Y(2,2)、Y(2,3)使用数组应注意的问题:1)、在一切使用简朴变量的地方,均可以使用数组元素2)、在赋值和输入语句中使用数组名时,表达将同一值赋给所有数组元素。3)、在同一环境下,数组名不能与简朴变量同名。4)、在赋值语句中的表达式位置不能出现数组名5)、可以用一维数组的形式访问二维数组。例如:数组Y中各元素用一维数组形式可依次表达为:Y(1)、Y(2)、Y(3)、Y(4)、Y(5)、Y(6),其中Y(4)与Y(2,1)是同一变量。3、内存变量常用命令1)、内存变量的赋值:格式1STORE〈表达式〉TO〈变量名表〉格式2〈内存变量名〉=〈表达式〉2)、表达式值的显示?[〈表达式表〉]:在下一行显示,省略表达式起换行作用??[〈表达式表〉]:在当前行输出3)内存变量的显示格式1:LISTMEMORY[LIKE〈通配符〉][TOPRINTER][TOFLIE〈文献名〉]格式2:DISPLAYMEMORY[LIKE〈通配符〉][TOPRINTER][TOFLIE〈文献名〉]功能:显示内存变量的当前信息,涉及变量名、作用域、类型、取值。LIKE:只显示与通配符相匹配的内存变量*-任意多个字符。?-任意一个字符.TOPRINTER:将显示结果送往打印机TOFILE<文献名>将显示结果保存至文本文献中,文本文献的扩展名为.TXTLISTMEMORY:连续显示DISPLAYMEMORY分屏显示例:LISTMEMORY:连续显示所有的内存变量DISPLAYMEMORY:分屏显示所有的内存变量4)、内存变量的清除格式1:CLEARMEMORY清除所有的内存变量。格式2:RELEASE<内存变量名表>清除指定的内存变量。Releab,cd格式3:RELEASEALL[EXTENDED]功能与格式1相同,在程序中必须加EXTENDED才干将公共内存变量删除格式4:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]LIKE:清除与通配符相匹配的内存变量EXCEPT:清除与通配符不相匹配的内存变量例:RELEASEALLLIKEA*只清除以A开头的所有内存变量RELEASEALLEXCEPTA?将变量名为两个字符,且以A开头之外的其他内存变量清除4、表中的数据与数组数据之间的互换1)、将表中一条记录复制到数组中格式1:SCATTER[FIELDS<字段名表>][MEMO]TO<数组名>[BALNK]格式2:SCATTER[FIELDSLIKE<通配符>][MEMO]TO<数组名>[BALNK](1)、格式1功能:将当前记录指定字段的第一个字段内容开始,依次复制到数组名中的第一个数组元素开始的数组中(2)、假如不使用FIELDS短语,则复制除备注型M和通用型G之外的字段(3)、数组可以不事先创建,假如数组元素个数少于字段个数,系统自动建立其余数组元素。(4)、DEMO:复制备注字段格式2的功能:(5)、FIELDSLIKE<通配符>:字段满足〈通配符〉的复制。(6)、FIELDSEXCEPT<通配符>:字段满足<通配符>不复制。2)、将数组复制到当前记录中功能:从第一个数组元素开始,依次向字段名表指定的字段写数据,如省略FIELDS选项,则依次向各个字段复制,若数组元素多余字段个数,多余部分被忽略,格式1:GATHERFROM<数组名>[FIELDS<字段名表>][MEMO]格式2:GATHERFROM<数组名>[FIELDSLIKE<通配符>|FIELDSEXCEPT<通配符][MEMO]MEMO:复制备注字段FIELDSLIKE<通配符>:字段满足〈通配符〉复制FIELDSEXCEPT<通配符>:字段满足<通配符>不复制(三)、表达式是由常量、变量、和函数通过特定的运算符连接起来的式子。1、表达式的形式单一的运算对象:(如常量、变量、或函数)多个的运算对象:由运算符将运算对象连接起来形成的式子。表达式的类型:任何表达式都有一个值,根据表达式值的类型,可分为四种类型。1)、数值表达式:由算术运算符将数值型数据连接起来形成,其运算结果仍然是数值型数据。算术运算符的优先级优先级运算符说明1()形成表达式内的子表达式2**或^乘方运算3*、/、%乘、除运算、求余运算4+、—加、减运算例:求×18.45和的值?(1/60-3/56)*18.45,(1+2^(1+2))/(2+2)求余运算求余运算%和取余函数MOD()的作用相同,余数的正负号与除数一致。(1)若被除数与除数同号:那么结果值为:|表达式1|/|表达式2|的余数+表达式2的符号。(2)若被除数与除数异号:|表达式2|-(|表达式1|/|表达式2|的余数)+表达式2的符号。例:?15%4--3,-15%-4---3?10%-3---2,-10%3-2,X=10Y=-3?X%Y-22)、字符表达式:由字符串运算符将字符型数据连接起来形成,其运算结果仍然是字符型数据。+:前后两个字符串首尾连接形成一个新的字符串。-:连接前后两个字符串,并将前字符串的尾部空格移到新成字符串的尾部。例:A=“ABCD”B=“EFGH”?A+B->“ABCDEFGH”,A-B->“ABCDEFGH”3)、日期时间表达式日期时间表达式中可以使用运算符有+和-两个,其格式有一定的限制,不能任意组合。(不能用+将两个<日期>或<日期时间>连接起来.)合法的日期时间表达式如下:格式结果及类型<日期>+<天数>或<天数>+<日期>日期型,指定日期若干天后的日期<日期>-<天数>日期型,指定日期若干天前的日期<日期>-<日期>数值型,两个指定日期相差的天数<日期时间>+<秒数>或<秒数>+<日期时间>日期时间型,指定日期时间若干秒后的日期时间<日期时间>-<秒数>日期时间型,指定日期时间若干秒前的日期时间<日期时间>-<日期时间>数值型、两个日期时间相差的秒数4)关系表达式关系表达式通常也称为简朴逻辑表达式,它由关系运算符将两个运算对象连接起来形成。即:<表达式1><关系运算符><表达式2>,运算结果为逻辑型数据。关系运算符:运算符说明运算符说明<小于<=小于等于>大于>=大于等于=等于==字符串精确比较<>、#、!=不等于$子串包含测试运算符==和$只能用于字符型数据,其他运算符号合用于任何类型的数据,但前后两个运算对象的数据类型要一致.(1)、数值型、货币型数据比较按数值大小比较,涉及负号例:?0>-1->.T.?$150<=$160->.T.(2)、日期型、日期时间型数据比较越早的日期或日期时间越小,越晚的日期或日期时间越大例:?{^2023-01-01}>{^2023-12-31}->.T.?{^2023-01-01}<={^2023-12-31}->.F.(3)、逻辑型数据比较.T.大于.F.(4)、子串包含测试格式:<字符串1>$<字符串2>若<字符串1>是<字符串2>的子串,则结果为.T.,否则为.F.(字母区分大小写)ASCII码例:?"abc"$"abcdeac"->.T.?"abc"$"Dabcdeac"->.T.?"abc"$"ddAbcdeac"->.F.设立字符的排序顺序字符串比较时,系统对两个字符串自左向右逐个比较,一旦发现两个相应字符不同,就根据这两个字符的排序序列决定两个字符串的大小.1)、排序设立:人机会话方式下设立“工具”--->”数据”->”排序序列”命令方式设立SETCOLLATETO“<排序顺序名>”(1)、Machine(机器)顺序:按照机内码排序,西文字符是按照ASCII码值排列:空格在最前面,大写字母小于小写字母,汉字的机内码与汉字国标码一致,常用一级汉字按拼音顺序决定大小。例:SETCOLLATETO“MACHINE”?“a”<”abc”,”a”<”A”,”A”>”B”.T..F..F.?“一”<”二”,”李明”<”王”,”王老师”<”王”,”您好”>”你好”.F..T..F..T.(2)PINYIN(拼音)顺序按拼音顺序排列,对于西文字符,空格在最前面,小写字母在前面,大写字母在后面.例:SETCOLLATETO“PINYIN”?“a”<”abc”,”a”<”A”,”a”<”A”.T..T..F.?“一”<”二”,”李”<”王”,”王老师”<”王”,”您好”>”你好”.F..T..F..T.(3)、STROKE(笔画)顺序无论中文、西文,按照书写笔画多少排序。例:SETCOLLATETO“STROKE”?“a”<”abc”,”a”<”A”,”a”<”A”.T..T..F.?“一”<”二”,”李”<”王”,”王老师”<”王”,”您好”>”你好”.T..F..F..T.?"c">"C".F.字符串精确比较与EXACT设立==:只有两个字符串完全相同(涉及空格以及各字符的位置)时,运算结果才会是逻辑真.T.,否则为.F.,与EXACT命令设立无关.=:运算结果与SETEXACTON|OFF设立有关。系统默认为OFF状态,当处在OFF状态时,只要右边的字符串与左边字符串的前面部分内容相匹配,则结果为逻辑真.T.否则为逻辑.F.当处在ON状态时,先在较短字符的尾部加上若干个空格使两个字符串的长度相等,然后再进行比较SETEXACT对字符串比较的影响比较=(EXACTOFF)=(EXACTON)==(EXACTON或OFF)“abc”=”abc”.T..T..T.“ab”=”abc”.F..F..F.“abc”=”ab”.T..F..F.“abc”=”ab“.F..F..F.“ab”=”ab”.F..T..F.“ab“=”ab”.T..T..F.“”=”ab”.F..F..F.“ab”=””.T..F..F.TRIM(“ab”)=”ab”.T..T..T.“ab”=TRIM(“ab”).T..T..T.例:SETEXACTOFFSTORE“计算机”TOS1STORE“计算机“TOS2STORE“计算机世界”TOS3?S1=S3,S3=S1,S1=S2,S2=S1,S2==S1.F..T..F..T..F.SETEXACTON?S1=S3,S3=S1,S1=S2,S2=S1,S2==S1.F..F..T..T..F.?S2>S1.F.4)、逻辑表达式是由逻辑运算符将逻辑数据连接起来而形成,其运算结果仍是逻辑型数据(1)、三个运算符:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)运算级别为NOT-ANDOR逻辑运算规则:设A,B分别为两个逻辑表达式AB.NOT.AA.AND.BA.OR.B.T..T..F..T..T..T..F..F..F..T..F..T..T..F..T..F..F..T..F..F.例:A=30B=40C=50?10<20AND10<30,10<20AND10>30,10>20AND10<30.T..F..F.?10<20OR10<30,10<20OR10>30,10>20OR10<30,10>20OR10>30.T..T..T..f.?NOT10<20,NOT10>20.F..T.(2)、运算符优先级算术运算符---字符串运算符和日期时间运算符---关系运算符-逻辑运算符例:setexacoff?4^2/2^2>2AND“ABC”>”abc”?12>2AND“人”-“民”>”人”?((10%3=1)AND(15%2=0))OR"电脑"!='计算机'(四)、函数函数是用程序来实现的一种数据运算,每个函数都有特定的功能,它往往需要若干个自变量,即运算对象。但只能有一个结果,称为函数值或返回值,函数可以用在表达式中,形式为:函数名(表达式)函数的类型:(5种类型)数值函数1、绝对值和符号函数(1)ABS(<数值表达式>)功能:返回指定的数值表达式的绝对值。例:?ABS(5)->,ABS(4-5)->1(2)SIGN(〈数值表达式〉)功能:返回指定数值表达的符号。结果为正->1结果为负->-1结果为零->0例:?SIGN(2)->1,SIGN(-2)->-1,SIGN(0)->02、求平方根格式:SQRT(<数值表达式>)功能:返回指定数值表达的平方根。自变量表达式的值不能为负。例:?SQRT(34),SQRT(81)3、圆周率函数格式:PI()功能:返回圆周率∏。该函数没有自变量。?PI()4、求整数函数:(1)INT(<数值表达式>)功能:返回指定数值表达式的整数部分.例:?INT(12.56)->12,INT(-13.8)->-13(2)CEILING(<数值表达式>)功能:返回大于或等于指定数据表达式的最小整数。例:?CEILING(34.6)->35,CEILING(-45.3)45(3)FLOOR(<数值表达>)功能:返回小于等于指定数据表达式的最大整数。?FLOOR(34.6)->34,FLOOR(-45.3)->-465、四舍五入函数ROUND(<数值表达1>,<数值表达2>)功能:返回指定表达式在指定位置四舍五入后的结果。说明:<数值表达2>指明四舍五入的位置。(1)<数值表达2>大于等于0,表达的是要保存的小数位数。(2)<数值表达2>小于0,表达的是整数部分舍入位数。例:?ROUND(345.9856,2),ROUND(345.9856,0),ROUND(345.45,-1),ROUND(345.56,-3)求余数函数格式:MOD(<数值表达式1>,<数值表达式2>)功能:返回两个数值相除后的余数。?mod(-10,3)->2求最大值和最小值函数(1)MAX(<表达式1>,<表达式2>[,<表达3>])功能:返回最大值。?MAX(“3”,”21”,”12”)->“3”?MAX(3,21)->21(2)MIN(<表达式1>,<表达式2>[,<表达式3>])功能:返回最小值。注:表达式的类型可以是数值型、字符型、货币型、日期型或日期时间型。但所有表达式的类型必须相同。例:?MAX('2','12','05'),MIN('汽车','飞机','轮船')字符函数(自变量一般是字符型数据)1、求字符串长度函数格式:LEN(<字符表达式>)功能:返回指定字符表达式值的字符长度,即所包含的字符个数。函数值类型为数值型。?LEN(“VFP程序设计”)->122、大小写转换函数(1)LOWER(<字符表达式>)功能:将指定表达式中的大写字母转换为小写字母。例:?LOWER(‘34ABCDbbdd’)(2)UPPER(<字符表达式>)功能:将指定表达式中的小写字母转换为大写字母。例:?UPPER(‘34ABCDbbdd’)ACCEPT“请输入一个字母“toAIf_UPPER(A)___=”Y”3、空格字符串生成函数格式:SAPCE(<数值表达式>)功能:返回指定数目的空格组成的字符串。?SPACE(10)+’ABC’4、删除前后空格函数(1)TRIM(<字符表达式>)或RTRIM(<字符表达式>)功能:返回指定字符表达式去掉尾部空格后形成的字符串。例:?TRIM(“AABB”)+’11’(2)LTRIM(<字符表达式>)功能:返回指定字符表达式去掉前导空格后形成的字符串。例:?”11”+LTRIM(“AABB”)+’22’(3)ALLTRIM(<字符表达式>)功能:返回指定字符表达式去掉前导和尾部空格后形成的字符串。例:?”11”+ALLTRIM(“AABB”)+’22’5、求子串函数(1)LEFT(<字符表达式>,<长度>)功能:从字符表达式左边返回一个指定长度的子串。?LEFT('ABCDE',3),LEFT('中国',2)(2)RIGHT(<字符表达式>,<长度>)功能:从字符表达式右边返回一个指定长度的子串。?RIGHT('ABCDE',3),RIGHT('中国',2)(3)SUBSTR(<字符表达式>,<起始位置>[,<长度>])功能:从字符表达式指定位置返回一个指定长度的子串。若缺省<长度>,则函数从指定位置一直取到最后一个字符。?SUBSTR('ABCDE',3),SUBSTR('中国',3,2)?SUBSTR('ABCDE',3,10)6、计算子串出现次数函数OCCURS(<字符表达式1>,<字符表达式2>)功能:返回第一个字符表达式1在第二个字符表达式2中出现的次数,函数值为数值型。若第一个字符串不是第二个字符串的子串,函数值为0。例:?OCCURS(‘A’,‘ABCDEA’)->2?OCCURS(‘G可有可无’,‘ABCDEA’)->07、求子串位置函数AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])或ATC(<字符表达式1>,<字符表达式2>[,<数值表达式>])功能:假如<字符表达式1>是<字符表达式2>的子串,则返回<字符表达式1>的首字符在<字符表达式2>的位置,若不是子串,则返回0。说明:ATC()与AT()功能相似,不区分大小写。(2)<数值表达式>用于表达在<字符表达式2>中搜索<字符表达式1>第几次出现,省略时,默认值是1。?AT(“AB”,”ABCDABCD”)->1?AT(“AB”,”ABCDABCD”,2)->5?ATC(“ab”,”ABCDABCD”)->1?AT(“ab”,”ABCDABCD”)->08、子串替换函数格式:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>)功能:用<字符表达式2>值替换<字符表达式1>中由<起始位置>和<长度>指定的一个子串。注:(1)假如<长度>是0,<字符表达式2>则插在由<起始位置>指定字符前面。?stuff(“112233”,3,0,”aa”)->11aa2233(2)假如<字符表达式2>是空串,那么<字符表达式1>中由<起始位置>和<长度>指定的子串被删除。?stuff(“112233”,3,2,””)->1133?stuff(“112233”,3,2,”aa”)->11aa339、字符替换函数CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)功能:当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中的相应字符(相同位置)替换这些字符。?crhtran(“1122335”,”23”,”ab”)->11aabb5说明:(1)假如第三个字符串包含字符个数少于第二个字符串包含的字符个数,因而没有相应字符,那么第一个字符串中的相匹配的各字符被删除。?crhtran(“1122335”,”23”,”a”)->11aa5假如第三个字符串包含字符个数多于第二个字符串包含的字符个数,多余字符被忽略。例:?CHRTRAN('','2345','5678')?CHRTRAN('','26','5566')?CHRTRAN('','2346','55')10、字符串匹配函数格式:LIKE(<字符表达式1>,<字符表达式2>)功能:比较两个字符串相应位置上的字符,若所有相应字符都相匹配,则函数返回逻辑真(.T.),否则返回逻辑假(.F.)注:<字符表达式1>中可以包含通配符*和?例:?LIKE("AB","AB")->.T.?LIKE("ABC","AB")->.F.?LIKE("AB","ABC")->.F.?LIKE("AB?","ABC")->.T.?LIKE("ABC","AB?")->.F.?LIKE("AB*","ABC")->.T.日期和时间函数1、系统日期和时间函数(1)DATE()功能:返回系统当前日期,函数值为日期型(D)(2)TIME()功能:返回系统当前时间,函数值为字符型(C)(3)DATETIME()功能:返回系统当前日期时间,函数值为日期时间(T)。2、求年份、月份和天数函数(1)YEAR(<日期型表达式>|<日期时间表达式>)功能:返回表达式中的年份。YEAR({^1012/02/01})=2023YEAR({^1012/02/01})=”2023”(错误)(2)MONTH(<日期型表达式>|<日期时间表达式>)功能:返回表达式中的月份。(3)DAY(<日期型表达式>|<日期时间表达式>)功能:返回表达式中指定月份里的哪一天。注:返回值都为数值型(N)3、时、分和秒函数(1)HOUR(<日期时间表达式>)功能:返回表达式中的小时部分(24小时制)。(2)MINUTE(<日期时间表达式>)功能:返回表达式中的分钟部分。(3)SEC(<日期时间表达式>)功能:返回表达式中的秒数部分。注:返回值都为数值型(N)数据类型转换函数1、数值转换成字符函数格式:STR(<数值表达式>[,<长度>[,<小数位数>]])功能:<数值表达式>的值转换成字符符串,转换时根据需要自动进行四舍五入。说明:(1)省略<长度>和<小数位数>,小数位数默认为O,长度默认值为10。(2)返回字符串的抱负长度(设为L)为:<整数部分位数>+<1位小数点>+小数位数(3)假如<长度>大于L,则字符串加前导空格补足规定的<长度>。(4)假如<长度>值小于等于L,但大于整数部分(涉及负号)位数,则优先满足整数部分而自动调整小数部分。(5)假如<长度>值小于整数部分位数,则返回一串*号例:?STR(123456.78)?STR(123456.78,7)?STR(-123456.78,7)?STR(123456.78,5)2、字符转换成数值格式:VAL(<字符型表达>)功能:将由数字符号(涉及正负号、小数点)组成的字符型数据转换成相应的数值型数据。说明:(1)若字符串内出现非数字字符,那么只转换前面部分(2)若字符串的首字符不是数字符号,则返回数值零,但忽略前导空格。例:?VAL('23.456'),VAL('-23.65')?VAL('34A.56'),VAL('B34.65')3、字符转换成日期或日期时间(1)CTOD(<字符表达式>)功能:将<字符表达式>转换成日期型数据SETDATETO“AMER”例:?CTOD(“03/20/99”)(2)CTOT<字符表达式>)功能:将<字符表达式>转换成日期时间型数据.例:SETDATETO“AMER”?CTOT("03/20/9915")4、日期或日期时间转换成字符串(1)DTOC(<日期表达式>|<日期时间表达>[,1])功能:将<日期表达式>|<日期时间表达>转换成字符串。注:1)字符串中的日期部分与SETDATETO和SETCENTURY命令有关。例:SETDATETO"AMER"SETCENTURYON?DTOC({03/20/99},1)SETCENTURYOFF?DTOC({03/20/99})2)[,1]:表达字符串的格式为YYYYMMDD格式,共8个字符。例:?DTOC({03/20/99},1)(2)TTOC(<日期时间表达>[,1])功能:将<日期时间表达>转换成字符串。注:(1)字符串中的日期部分与SETDATETO和SETCENTURY命令有关。(2)字符串中的时间部分与SETHOURSTO12|24命令有关。SETDATETO"AMER"SETCENTURYONSETHOURSTO12?TTOC({03/20/99})?TTOC({03/20/99,13})SETCENTURYOFFSETHOURSTO24?TTOC({03/20/99})?TTOC({03/20/99,13})2)[,1]:表达字符串的格式为YYYYMMDDHHMMSS格式,共14个字符。例:?TTOC({03/20/99,12:10},1)5、宏替换函数格式:&<字符串变量>[.]功能:替换出字符型变量的内容,即&的值是变量中的字符串例1:AA='123'?&AA?&AA+10例2:BB=”ABCD”?&BB(为什么犯错?例3:AB=”23”CC=”A”?&CC.B(值为多少?)相称于?ab测试函数1、值域测试函数格式:BETWEEN(<表达式T>,<表达式L>,<表达式H>)功能:判断<表达式T>是否介于<表达式L>,<表达式H>之间,若是则返回.T.,否则返回.F.例:?BETWEEN(12,10,20),BETWEEN(12,13,20)注:若<表达式L>或<表达式H>有一个变量是NULL值,则函数返回NULL值。?BETWEEN(12,NULL,20),BETWEEN(12,9,.NULL.)2、空值(NULL值)测试函数格式isnull(表达式)功能:测试一个表达式的结果是否为null值。例:X=.NULL.?ISNULL(X)3、“空”值测试函数格式:empty(表达式)功能:测试表达的结果的是否为“空”值,若是空值,则返回.T.,否则返回.F.注:不同的数据类型,”空”值有不同的规定数据类型“空”值数据类型“空”值数值型、货币型、整型、双精度型、浮点型0字符型空串、空格制表符、回车(CHR(13))、换行(CHR(10))逻辑型.F.日期型{//}或CTOD(””)日期时间型?empty({//,})或CTOT(””)备注型备注型字段无内容4、数据类型测试函数格式:VARTYPE(<表达式>[,逻辑表达式>])功能:返回<表达式>的数据类型值。字符型。只能是C、N、D、L、Y、T注意假如是没有类型的返回一个U返回的数据类型返回的字母数据类型返回的字母数据类型C字符型G通用型N数值、整型、浮点型、双精度型D日期型Y货币型T日期时间型L逻辑型XNULL值O对象型U未定义说明:(1)若〈表达式〉是一个数组,则返回第一个数组元素的数据类型。(2)若〈表达式〉的运算结果为NULL值,则根据<逻辑表达式>来决定返回〈表达式>的类型1)若<逻辑表达式>为.T.,就返回<表达式〉的原值.2)若<逻辑表达式>为.F.,就返回X,表白<表达式〉的值为NULL值。例:A=34A=.NULL.?VARTYPE(A)?VARTYPE(A,.T.)5、条件测试函数格式:IIF(<逻辑表达式>,<表达式1>,<表达式2>)功能:若<逻辑表达式>为.T.,则返回<表达式1>的值.否则返回<表达式2>的值.例:?IIF(12>20,‘100’,200)6、表文献测试函数1)表文献的逻辑结构文献起始标记(首标)首记录(top)第2条记录…第N条记录尾记录(Bottom)文献结束标记(尾标)2)表文献尾测试函数格式:EOF(<工作区号>|<表别名>)功能:测试记录指针是否指向文献尾,若是返回逻辑.T.,否则显示逻辑假.F.,表文献尾是指最后一条记录的后面。若省略自变量,则测试当前工作区中的表文献。Use仓库表GOBOTTOM?EOF()->.F.SKIP?EOF(),EOF(2)&&假定2号工作区没有打开表.T..F.3)表文献首测试函数格式:BOF(<工作区号>|<表别名>)功能:测试记录指针是否指向文献首,若是返回逻辑.T.,否则显示逻辑假.F.,表文献首是指第一条记录的前面。若省略自变量,则测试当前工作区中的表文献。若当前工作区没有打开表,函数返回逻辑假.F.,若表文献不包含任何记录,函数返回逻辑真.T.Use仓库表GOTOP?BOF()->.F.SKIP-1?BOF(),BOF(2)&&假定2号工作区没有打开表.T..F.ZAP?EOF(),BOF()->.T..T.4)记录号测试函数格式:RECNO(<工作区号|<表别名>)功能:测试当前表文献或指定表文献中的当前记录的记录号。若当前工作区没有打开表,函数返回0Use仓库表&&假设表中有4条记录?BOF(),RECNO()&&显示.F.1Skip-1?BOF(),RECNO()&&显示.T.1GOBOTTOM?EOF(),RECNO()&&显示.F.4Skip?EOF(),RECNO()&&显示.T.55)记录个数测试函数格式:RECCOUNT(<工作区区号>|<表别名>)功能:测试当前表文献或指定表文献中物理存在的记录数。不管记录是否被逻辑删除Use仓库表&&假设表中有4条记录?RECCOUNT()&&显示4DELENEXT2?RECCOUNT()&&显示46)记录删除测试函数格式:DELETE(<工作区号|<表别名>)功能:测试当前表文献或指定表文献中当前记录是否有逻辑删除标记“*”,若有返回.T.,否则返回.F.,缺省自变量,则测试当前工作区中所打开的表USE仓库表Go2Delete?delete()->.T.GO4?delete()->.F.第四章数据库操作一、数据库的基本概念通过一组系统文献将互相联系的数据库表及相关的数据库对象(数据库表,视图、表之间的联系)统一组织和管理,由数据库文献(.DBC)数据库备注文献(.DCT),数据库索引文献(.DCX)三个文献构成,简称DB。二.数据库操作命令1、建立数据库格式:createdatabase数据库名[.dbc]功能:建立一个新数据库,该数据库是一个空库,建立后自动处在打开状态,不弹出数据库设计器例:CREATEDATABASE学生管理2、打开数据库格式:OPENDATABASE数据库名[EXCLUSIVE/SHARE][NOUPDATE][VALIDDATE]功能:打开数据库,不弹出数据库设计器1)EXCLUSIVE:独占方式打开2)SHARE:共享方式打开3)NOUPDATE:只读方式打开,不允许编辑。4)[VALIDATE]:打开数据库时检查数据库中的对象(表和索引)是否合法。例:Opendatabase学生管理3、修改数据库格式:MODIFYDATABASE数据库名[NOWAIT][NOEDIT]功能:修改数据库,打开数据设计器1)NOWAIT:在交互使用时无效,在程序中使用时,数据库设计器打开后,应用程序不暂停。3)NOEDIT:严禁对数据库进行修改。例:MODIDATA学生管理4、删除数据库格式:DELETEDATABASE数据库名[DELETETABLES][RECYCLE]功能:删除数据库。默认不删除数据库中表1)[DELETETABLES]:删除数据库中的表2)[RECYCLE]:删除数据库和表放入WINDOWS回收站中。例:DELEDATA学生管理5、设立当前数据库格式:SETDATABASETO[数据库]功能:设立当前数据库。在同一时刻只能有一个当前数据库;必须先打开相应数据库SETDATABASETO:使得所有打开的数据库都不是当前数据库。所有数据库都没有关闭。3)在同一个工作区中可以同时打开多个数据库,但只能打开一个表例:SETDATATO学生管理SETDATATO数据库的关闭格式1:CLOSEDATABASE功能:关闭当前数据库格式2:CLOSEDATABASEALL功能:关闭所有打开的数据库三、表的基本操作命令(自由表、数据库表)(一)、表的建立格式:CREATE表名[.DBF]功能:建立一个表文献,假如建立数据表,要先打开数据库。字段名自由表的字段名最长为10个字符。数据库表字段名最长为128个字符。字段名必须以字母、汉字开头,其余任意字段名不能包含空格。2)字段类型:C:长度可变:(最多能存储254个字符)N:长度可变Y:货币型(长度为8)。不可变F:浮点型B:双精度I:整型(长度为4)M:备注型(长度为4)(存储254个以上的字符)G:通用型(长度为4):存放图片、电子表格、文档。D:日期型(长度为8)T:日期时间型(长度为8)L:逻辑型:(长度为1)3)记住各种类型的长度。D->8,T->8,Y->8,L->1,I->4,G->4,M->44)空值(null)字段是否为空,空表达不拟定(二)、打开表格式:USE表名[IN<工作区号>][ALIAS<别名>]功能:打开表文献。说明:1)省略可选项:在当前工作区中打开表2)IN<工作区号>:在指定工作区中打开表3)ALIAS<别名>:为打开表提供一个别名,若省略,默认打开的表别名与表文献主文献名相同。4)刚打开表时,记录指针指向首记录。5)use:关闭表(三)表结构的操作命令1、修改表的结构格式:MODIFYSTRUCTURE功能:修改当前表的结构,可以修改已有的字段,新加字段、删除字段。2、查看表的结构格式:1)LISTSTRUCTURE[TOPRINTER][TOFILE<文献名>]2)DISPLAYSTRUCTURE[TOPRINTER][TOFILE<文献名>]功能:显示当前表的结构。说明:LISTSTRU:连续显示DISPSTRU:分屏显示3)TOPRINTER:把表的结构信息送打印机输出4)TOFILE文献名:把表的结构信息输出到一个扩展名为.TXT的文献中。3、复制表结构格式:COPYSTRUCTURETO<文献名>[FIELDS<字段名表>]功能:复制当前表文献的所有或部分字段,生成一个新的表结构。说明:省略FIELDS<字段名表>:新生成的表结构与原表结构完全相同,具有FIELDS<字段名表>:新表结构只包含<字段名表>指定的字段。注意:以上操作必须将表先打开(四)、表记录的操作命令1.显示记录(在VFP的屏幕上显示)格式:LIST|DISPLAY[OFF][<范围>]FOR|WHILE<条件>[FIELDS字段名表][TOPRINTER][TOFILE<文献名>]功能:显示表中的记录说明:1)LIST:连续显示,DISP:分屏显示2)省略<范围>:LIST显示所有记录,DISPLAY显示当前记录。3)FIELDS<字段名表>:显示指定的字段,若省略,显示所有的字段。4)OFF:不显示记录号,若省略,默认显示记录号。5)TOPRINTER:显示结果送到打印机输出6)TOFILE<文献名>:显示结果送到扩展名为.txt的文本文献中。例:1、显示仓库表中的所有记录USE仓库表LIST或DISPALL2、显示仓库表中的第2号~第3号记录USE仓库表GO2LISTNEXT23、显示仓库表中面积大于等于300的记录USE仓库表LISTFOR面积>=300LISTALLFOR面积>=300DISPFOR面积>=3004、显示仓库表中面积大于等于300且城市为北京的记录USE仓库表LISTFOR面积>=300AND城市=”北京”5、显示仓库表中面积大于等于300且城市为北京的所有记录的仓库号,城市,面积3个字段USE仓库表LISTFIEL仓库号,城市,面积FOR面积>=300AND城市=”北京“6、显示仓库表中经营良好所有记录的仓库号,城市,面积3个字段USE仓库表LISTFIEL仓库号,城市,面积FOR经营状况->L型2、设立过滤和设立字段1)设立过滤:格式:SETFILTERTO[<条件>]功能:过滤满足条件的记录,省略条件选项,恢复为所有的记录。USE仓库表SETFILTERTO仓库号=“WH1”LIST&&只显示仓库号为WH1的所有记录SETFILTERTOLIST&&只显示所有记录2)设立字段格式:SETFIELDSTO[<字段名表>|ALL]功能:表达用户只能对“字段名表”列出的字段操作,其余字段暂时隐蔽起来,说明:ALL:表达表中所有字段。SETFIELDSTO:取消“字段名表”中设立的字段。SETFIELDSOFF:取消“字段名表”中设立的字段,恢复对表中所有的字段进行操作。例:USE创库表LIST&&显示所有字段。SETFIELDSTO仓库号,面积LIST&&只显示仓库号、面积两个字段。SETFIELDSTOLIST&&所有字段都不显示SETFIELDSOFFLIST&&显示所有字段。3、记录定位1)绝对定位(GO或GOTO命令)格式:(1)go/goto<数值表达式>(2)go/gototop/bottom(3)go/gotorecord<数值表达式>功能:移动记录指针,记录指针所指的位置即为当前记录。例:gotop&&记录指针指向首记录gobottom&&记录指针指向尾记录go3&&记录指针指向记录号为3的记录gorecord3&&记录指针指向记录号为3的记录2)相对定位格式:SKIP[<数值表达式>]功能:以当前记录为其准,向上或向下移动记录指针。说明:<数值表达式>为正值,记录指针移动、为正值,记录指针向下移动。例:use仓库表?RECNO()->1SKIP3?RECNO()->4SKIP-2?RECNO()->2添加记录1)在尾部添加记录格式:APPEND[BLANK]功能:只在尾部添加记录。说明:BLANK:只在尾部添加空记录。2)在任意位置添中,但前提记录定位。格式:INSERT[BEFORE][BLANK]功能:在任意位置添中,但要提前定位记录。说明:BLANK:只在尾部添加空记录。BEFORE:在当前记录前插入记录5.修改记录1)BROWSE命令:以浏览窗口的方式修改记录。添加记录:CTRL+Y逻辑删除记录:CTRL+T2)EDIT|CHANGE交互方式修改3)用指定值直接修改格式:REPLACE[<范围>]<字段名1>with<表达式1>[ADDITIVE][,<字段名2>with<表达式2>[ADDITIVE][FOR<条件>]]功能:在指定的范围内,将满足条件的记录的某些字段内容用相应的表达式值来替换。注:省略[<范围>][FOR<条件>]选项,仅对当前记录替换。例:学生表(学号,姓名,政治,数学,总分)。计算总分:USE学生表replALL总分with政治+数学(计算所有学生的总分。Go2repl总分with政治+数学(只对记录号为2的记录计算总分。没有for和all,则替换当前记录。5.记录的删除(逻辑删除、物理删除)1)逻辑删除(打删除标记*)格式:delete[范围][for条件]功能:逻辑删除,只打删除标记。说明:省略参数:逻辑删除当前记录。2)物理删除:(从表中彻底删除)PACK:将逻辑删除(带*号)的记录物理删除ZAP:一次性物理删除所有记录注:物理删除后不合恢复。6.恢复记录格式:RECALL[范围][FOR条件]格式:恢复逻辑删除记录注意:省略参数:逻辑恢复当前记录。例:recall&&只恢复当前记录recallFOR仓库号=“WH1”&&恢复仓库号为“WH1”记录recallall&&恢复所有逻辑删除的记录(五)、拷贝表文献命令格式:COPYTO<新表名>[范围][FIELDS字段名表][FOR<条件>]功能:将表中指定的字段与指定的记录复制到新表中。说明:使用该命令时,源表必须先打开。FIELDS<字段名表>:新表中只涉及指定定字段。FOR<条件:新表中只涉及满足条件的记录。(六)注型字段与通用型字段的操作1、备注型字段1)修改备注型字段格式:MODIFYMEMO<备注型字段1>[,<备注型字段2>…][NOEDIT]功能:编辑备注型字段。说明:NOEDIT:编辑的备注型字段具有只读属性,只能浏览。2)复制备注型字段的内容格式:COPYMEMO<备注型字段名>TO<文献名>[ADDITIVE]功能:把备注型字段的内容复制至文献中。说明:ADDITIVE:将备注型字段内容追加到指定文献的磁盘文献的尾部.不覆盖文献中原有的内容。2)向备注型字段复制内容格式:APPENDMEMO<备注型字段名FROM<文献名>[OVERWRITE]功能:把指定文献中内容复制到备注型字段中。说明:OVERWRITE:覆盖备注型字段内容,否则追加到备注型字段内容的尾部。2、通用型字段1)将图像文献存入通用型字段APPENDGENERAL<通用型字段名>FROM<图像文献名>2)通用型字段的显示@行,列SAY通用型字段名6.索引1)索引的分类主索引,候选索引,唯一索引,普通索引。2)索引文献的分在单索引文献:.idx复合索引文献:cdx复合索引分为两种:结构化复合,非结构化复事。结构化:索引文献名与表名相同,随着表的打开是打开,随着表的关闭而关闭。3)创建索引单索引建立:indexon索引表达式to索引文献名当索引表达式涉及到两个字段时,必须转为字符型用+/-连接。会出现改错。Indexon姓名+dtoc(出生日期)toxmrq按工资降序索引indexon20230–工资togz结构化复合索引indexon表达式tag索引标记asc/descfor条件非结构化复合索引indexon表达式tag索引标记of索引文献名asc/desc4)索引文献的使用use表名index索引文献名use表名alia别名in区号index索引文献名setindexto索引文献名setorderto索引标记asc/desc指定当前索引。6.查询定位locatefor条件查询定位,此语句不规定索引,找到后不显示,想显示输入:display与locate配对,实现继续查找的命令是continue。8.数据完整性分为三种:实体完整性:主索引和候选索引。域完整性:约束参照完整性:由外键来实现。9.自由表addtable表名removetable表名10排序sorton字段名1/a/d/c,字段名2/a/d/cto新表名for条件fields字段中列表与索引不同,生成个新表。必须打开才干使用。已经不推荐使用。11.多工作区操作32767转换工作区:select区号/区名select1selectaselect0显示别名区字段的值:区名.字段名区名->字段名select1usexsdaselect2usexscj?学号,xsda.性别,xsda.家庭地址usexsdaaliaxsetrelationto关键字into别名两个表建立临时连接。规定两表建立索引。别名区的指针会随着当前区移动。Joinwith别名to新有for条件fields字段名两个表建立物理连接,生成一个新表。Select1UsexsdaSelect2UsexscjJoinwithatoxsdacjfor学号=a->学号fields学号,a->姓名,a->性别,a->出生日期,政治,数学,语文,总分12.补充countto变量名sum字段名表to变量名表aver字段名表to变量名totalon字段名to新表fields字段名表此命令规定必须索引。Find字符变量Seek表达式这两个查询语句必须索引。第五章关系数据库标准语言sql:是结构化的语言。它包含数据定义、数据操纵、数据管理控制等功能。该语言简朴。5.1sql概述sql86,sql89sql92具有以下特点:1)是一个一体化语言,涉及数据定义、数据查询、数据操纵和数据控制四大功能。2)是一种高非过程化的语言。3)语言简洁4)可以直接以命令交互使用,也可以嵌入到程序中使用。数据定义:create,alter,drop数据查询:select数据操纵:insertupdatedelete数据控制:grantrevoke5.2查询功能sql的核心查询。Select命令。基本语法:select*/字段名列表distincttopnfrom表名列表where查询条件groupby字段having分组条件orderby字段asc/desc解释:1)select/字段名列表:表达查询哪些字段。假如是表中的所有字段是用*表达。假如是某几个字段,则列出段名。Select*Selectxh,xm2)distinct:表达去掉反复元组。3)topn表达只显示满足条件的前N条记录。此命令规定必须与orderby配对使用。4)from表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论