数据库应用与开发课件_第1页
数据库应用与开发课件_第2页
数据库应用与开发课件_第3页
数据库应用与开发课件_第4页
数据库应用与开发课件_第5页
已阅读5页,还剩260页未读 继续免费阅读

下载本文档

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

文档简介

数据库应用与开发第一章概述第一节数据库系统概述一、数据处理方法的演变数据库应用系统订票系统银行系统企业管理信息系统学校教务管理系统……1.数据处理的特点数据存储:长期保存、大容量数据实时处理基本数据操作:查询,更新(增、删、改)

——基于大容量存储数据的操作对数学运算能力要求相对不高,通常是简单的算术运算、统计运算面向多种应用(多用户):共享、并发访问数据安全性要求数据完整性要求2.数据库技术的产生发展:技术本身的发展 实际需求的要求数据管理方法的演变经历了三个阶段:人工管理阶段文件系统阶段数据库系统阶段

-数据的结构化,面向整体的观点组织数据

-数据共享,可控冗余度

-高度的数据和程序独立性

-提供安全性、完整性及并发访问等控制功能三、数据库应用与开发

用数据库管理系统(数据库语言及其工具)解决实际问题,其过程分两步:

-数据库设计

-数据库的实现及其操作用数据模型描述现实世界的问题,并对数据模型实施操作,实现相应的数据处理。1.数据库设计

用关系数据模型描述现实世界,即设计关系(表)、主码、索引、外码、关联等。

所需基础知识:

信息系统分析与设计/

管理信息系统

——分析现实世界的信息需求

数据库原理

——设计结构良好的数据库示例:主码(Sno+Cno)SnoNameGen.BirthAddr.CnoSubj.TimeCreditScore01张强M78/9/1XC01数学9668501张强M78/9/1XC02英语12489001张强M78/9/1XC03物理563.58302田丽F77/2/25WC02英语12489002田丽F77/2/25WC04化学6448802田丽F77/2/25WC05生物4837503王东M78/11/18XC01数学9667803王东M78/11/18XC03物理563.58003王东M78/11/18XC04化学64492结构不好存在的问题数据冗余插入异常删除异常修改异常2.数据库的实现及其操作

在计算机系统中物理地实现所设计的数据库,并对数据库实施操作,即使用数据库中的数据——对数据库进行增删改、查询等操作。工具:数据库管理系统(DBMS) 如Oracle,Sybase,SQLServer,DB2,VisualFoxPro等。四、数据模型在数据库系统中,数据库设计的核心问题就是设计一个好的数据模型,数据模型的好坏直接影响数据库的性能。目前流行的数据模型是关系数据模型。

1.关系数据模型

关系数据模型是把现实世界信息需求的数据逻辑结构归结为满足一定条件的二维表的模型。一个二维表就是一个关系,描述问题的所有二维表的集合就构成了一个关系数据库。

从理论上定义,关系是笛卡尔积的任意一个子集。从直观上看,关系就是一个具有横行(记录)和竖列(字段)的一张二维表。日常工作和生活中的各种报表,如工资表、学生成绩表、人事档案表、产品库存表、生产报表等都具有二维表的结构,可以很方便地表示成关系数据模型中的一个关系。

关系数据模型示例SnoCnoScore01C018501C029001C038302C029002C048802C057503C017803C038003C0492SnoNameGen.BirthAddr.01张强M1978/9/1X02田丽F1977/2/25W03王东M1978/11/18XCnoSubj.TimeCreditC01数学966C02英语14412C03物理644C04化学644C05生物483关系数据模型分析SnoNameGen.BirthAddr.字段记录数据01张强M1978/9/1X02田丽F1977/2/25W03王东M1978/11/18X……结构表中含有几个字段:字段名、字段类型、字段宽度、小数位学生表相关术语之间的联系Database(数据库) UniversityDatabase StudentTable,CourseTable,ScoreTable,……Table(表) CnoSubjectTimeCredit C01数学966 C02英语14412 C03物理644

……

CnoSubjectTimeCreditRecord(记录) J101数学16010Fields(字段) J101Byte(字节) 01001010(字母J的ASCII码)Bit(位) 02.关系的性质一个关系中的任意两个记录不能相同;关系的每列都必须有不同的名字;列是同质的,即关系的每列都是同类型的数据;关系的行、列的次序不影响其信息内容,可以任意交换;关系的每个分量都必须是不可分的基本数据项;每个关系都必须至少有一个关键字(即主码)唯一标识它的记录。3.关系的码定义1:若关系中的某一字段或一组字段的值能唯一地标识关系的一个记录,则称该字段或字段组为关系的候选码。若一个关系有多个候选码,则选定其中一个为主码。定义2:F是关系R的某一字段或一组字段,但不是关系R的主码,如果F与关系S的主码对应,则称F是关系R的外码。DnoDnameDlocDmgrD-01财务部D-02生产部D-03销售部D-04供应部D-05人事部EnoEnameTitleSalaryDnoE-001张立D-01E-002赵洪新D-01E-003王强D-03E-004齐东D-02E-005孙海D-02E-006刘伟D-03E-007卫希凯NullDepartmentTableEmployeeTable码的示例关系之间是通过主码和外码相互关联的4.其他二维数据组织形式电子表格(Excel,Lotus)二维数组文本数据文件(*.txt,*.dat)数据的引用与数据所在的位置有关,即地址相关。而关系中数据的引用是地址无关的——数据和程序相互独立。第二节VisualFoxPro简介一、VFP的发展20世纪70年代末,DbaseⅡ,Ashton-Tate公司1984/1985年DbaseⅢ/DbaseⅢ+1987年FoxBASE+,FOX公司1989年FoxProforDOS1993年FoxProforWindows,微软公司1995年VisualFoxProVisualFoxProFoxProFoxBasexBase版本号运行平台8.0/7.0Windows20006.0Windows95/985.0Windows95/983.0Windows95/982.5/2.6Dos,Windows95/982.0Dos1.0Dos

DosDos发展兼容二、启动VFP,退出VFP启动/运行VFP

桌面快捷方式 开始菜单-程序-VisualFoxPro退出VFP

在系统菜单“文件”中选择“退出” 在命令窗口中执行“QUIT”命令桌面快捷方式启动VFP用开始菜单启动VFP三、VFP的界面初始界面命令窗口系统菜单对话框工具栏VisualFoxPro6.0的初始界面(一)VisualFoxPro6.0的初始界面(二)VisualFoxPro6.0的系统菜单VisualFoxPro6.0的对话框四、VF的命令执行方式命令方式 在命令窗口中输入要执行的命令,以回车结束命令,并开始执行命令。菜单引导方式 在FoxPro的系统菜单中选择相应的菜单选项,在对话框中填写命令参数,执行命令。程序执行方式 编写FoxPro源程序(命令程序),运行程序,按照程序的逻辑结构执行程序中的命令。五、关于VF的命令和函数除@…

命令、ON…

命令外,VF的命令均以英语动词开头,结构为:命令动词+若干修饰子句;命令中的保留字和函数名几乎都采用完全或缩写的英语单词,因而容易理解和记忆;命令中的保留字和函数名不区分字母的大小写;在多数情况下,保留字和函数名可以简化使用其前四个字母即可。例如,的命令DISPLAYSTRUCTURE可简化为DISPSTRU、DISPSTRUCTURE、DISPLAYSTRU,函数ISUPPER()可简化为ISUP()。五、关于VF的命令和函数除少数子句外,命令中起限制和修饰作用的子句,可在命令中以任意顺序出现。因此,下述几个命令是完全等效的:

LISTFIELDSsno,name,score

FORscore>=590

ALL

OFF

TOPRINTERLISTFORscore>=590

FIELDSsno,name,scoreALLOFFTOPRINTERLISTALLOFFFORscore>=590

FIELDSsno,name,scoreTOPRINTERLISTTOPRINTEROFFALLFORscore>=590

FIELDSsno,name,score

六、命令语法约定<…>选择该项时,尖括号中的内容必须代之以实际数据;[…]任选项,表示其中的内容可以选择也可以不选择;…|…

择一选项,表示应从列出的内容中选择一项。一般,用大写字母标识符代表FoxPro系统的保留字,小写字母标识符为由用户使用时填写的项,如文件名、变量名等。七、VF的辅助设计工具向导——向导是一种快捷的设计工具,它通过一组对话框依次与用户对话,引导用户分步完成VFP的某项任务。VFP6.0有21种向导,参见P22,表1.2。设计器——与向导类似,用来帮助用户创建或修改VFP应用程序所需的构件,如表、表单、菜单等。VFP6.0有9种设计器,参见P23,表1.3。生成器——帮助用户在VFP应用程序的构件中生成并加入某类构件,如文本框、表格等。VFP6.0有10种生成器,参见P24,表1.4。八、数据类型(熟练掌握)字符型(C):0-254个字节的文本数据,如学号,姓名,性别,邮政编码,电话号码,身份证号,产品名称等。数值型(N):由正负号、整字和小数点组成且能用于数值运算的数据,如产量,价格,库存量,成绩,工资额等。日期型(D):由年份、月份、日组成的表示日历日期的数据,如生日,交货日期等。逻辑型(L):由真值、假值两个值组成的表示逻辑判断结果的数据,如婚否,党员否等。备注型(M):超过254个字节的长文本数据,如工作经历,奖惩情况等。八、数据类型(了解)日期时间型(T):由年份、月份、日、时、分、秒组成的表示某一时刻时间的数据,如交款时间,采样时间等。整型(N):不带小数的数值,如年龄,成绩等。货币型(Y):表示货币的数值,如价格,工资额等。浮动型(N):用科学记数法表示的数值。双精度型(N):表示高精度要求的数值。通用型(G):用来存放多媒体数据,如照片,图片等。九、文件类型及其扩展名对照表文件类型扩展名文件类型扩展名数据表备注文件单条目索引文件复合索引文件源程序文件编译程序文件表单定义数据表表单定义备注文件菜单定义数据表菜单定义备注文件生成的菜单程序

编译菜单程序DBFFPTIDXCDXPRGFXPSCXSCTMNXMNTMPRMPX项目管理数据库项目管理备注文件文本文件视图文件报表文件报表备注文件标签文件标签备注文件生成的查询程序编译查询程序可执行文件应用程序文件PJXPJTTXTVUEFRXFRTLBXLBTQPRQPXEXEAPP第二章表的基本操作建立新表表达式记录指针记录的增删改表的其他操作第一节建立新表建立表:建立表的结构——定义新表 输入数据记录——对表的操作之一定义/建立表结构:表名(*.DBF)

字段名 字段类型 字段宽度(小数位) 是否建索引 字段是否可为空1.如何建立新表a)表结构的逻辑设计——数据模型设计,即:建立几个表每个表里包含哪些数据项每个数据项采用什么数据类型每个表的主码是否需要建立索引b)在VF中实现表结构c)向表中输入初始数据记录2.用表设计器创建新表的结构命令方式

CREATEstudent↙菜单引导方式

文件(F)—新建(N)—表(T)—新建文件(N)*菜单引导方式*各类型数据的字段宽度系统自动设置:逻辑型:1日期型:8日期时间型:8整型:4货币型:8备注型:4通用型:4由用户定义:字符型:0-254数值型:20浮动型:20双精度型:8

小数点宽度=整数位+小数位+1+1

符号位*关于备注/通用型字段当定义备注/通用型字段时,系统自动产生同名的备注文件(*.FPT),作为表文件的辅助文件;在表文件中,备注/通用型字段宽度为4个字节,存储指向备注文件的地址信息,相当于指针;备注/通用型数据实际存储在备注文件中,所占用字节数根据实际情况按512字节倍数递增;备注文件不能单独使用。*结束退出表设计器保存退出点《确定》按钮按<Ctrl+W>键不保存退出点《取消》按钮按<Ctrl+Q>键按<Esc>键3.打开和关闭表打开表

USE<filename>

文件(F)—打开(O)—“表(*.dbf)”关闭表

USE CLOSETABLES CLOSEDATABASES CLOSEALL CLEARALL

窗口(W)—数据工作期(D)—“关闭”按钮关于表文件打开方式独享方式——EXCLUSIVE

对表结构、表记录操作没有限制只读方式——SHARED

可以显示表结构,但不可以修改表结构

对表记录操作没有限制设置命令:SETEXCLUSIVEON|OFFUSE…EXCLUSIVE|SHARED默认为独享方式打开示例SETEXCLUSIVEONUSEstudent或USEstudentEXCLUSIVESETEXCLUSIVEOFFUSEstudent或USEstudentSHARED4.表中初始数据的输入在上一步保存退出遇“现在输入记录”时选择Y,则

直接进入数据输入窗口。在上一步保存退出遇“现在输入记录”时选择N,则 从键盘直接录入:BROWSE命令(按Ctrl+Y键)

APPEND命令

显示(V)—浏览(B)

从数组中间接输入:APPENDFROMARRAY

命令 从其他文件间接输入:APPENDFROM

命令BROWSE[FIELDS<fieldlist>][FONT<font>[,<size>]]

[STYLE<style>]

[FOR<expL1>[REST]][FORMAT][FREEZE<fieldname>]

[KEY<expr1>[,<expr2>]][LAST|NOINIT]

[LOCK<expN1>][LPARTITION][NAME<objectname>]

[NOAPPEND][NODELETE][NOEDIT|NOMODIFY]

[NOLGRID][NORGRID][NOLINK][NOMENU]

[NOOPTIMIZE][NOREFRESH][NORMAL][NOWAIT]

[PARTITION<expN2>[LEDIT][REDIT]]

[PREFERENCE<expC1>][SAVE]

[TIMEOUT<expN3>][TITLE<expC2>]

[VALID[:F]<expL2>[ERROR<expC3>]]

[WHEN<expL3>][WIDTH<expN4>]

[WINDOW<windowname1>]

[IN[WINDOW]<windowname2>|INSCREEN]

[COLORSCHEME<expN5>]命令格式:APPEND[BLANK][IN<expN>|<expC>][NOMENU]两种方式:

APPENDBLANKIN<expN>|<expC>

以非交互方式直接追加一个空记录。

APPENDIN<expN>|<expC>

以交互方式追加数据记录。以交互方式追加数据记录APPENDFROM<filename>|?

[FIELDS<fieldlist>][FOR<expL>]

[[TYPE][DELIMITED[WITH<delimiter>|WITHBLANK|WITHTAB

|WITHCHARACTER<delimiter>]

|DIF|FW2|MOD|PDOX|RPD|SDF|SYLK

|WK1|WK3|WKS|WR1|WRK|CVS

|XLS|XL5[SHEET<sheetname>]|XL8[SHEET<sheetname>]]]

[AS<codepage>]5.表结构的修改何时需要修改表结构 增加字段 删除字段 修改字段名、类型、宽度、小数位、置空否 修改索引修改表结构的命令

MODIFYSTRUCTURE菜单引导修改表结构 显示(V)—表设计器(L)6.显示数据记录交互方式:同时可编辑数据记录

BROWSE命令 显示(V)—浏览(B)非交互方式:仅显示、不可编辑数据记录

LIST命令

DISPLAY命令(1)LIST/DISPLAY命令格式LIST[[FIELDS]<fieldlist>]

[<Scope>][FOR<expL1>][WHILE<expL2>]

[OFF][NOCONSOLE][NOOPTIMIZE]

[TOPRINTER[PROMPT]|TOFILE<filename>]DISPLAY[[FIELDS]<fieldlist>]

[<Scope>][FOR<expL1>][WHILE<expL2>]

[OFF][NOCONSOLE][NOOPTIMIZE]

[TOPRINTER[PROMPT]|TOFILE<filename>](2)LIST/DISPLAY命令解释FIELDS<fieldlist>

指定输出的字段(列选择)<scope>

指定输出的数据记录的范围(行选择)FOR<expL>或WHILE<expL>

指定输出的数据记录的条件(行选择)TOPRINTER[PROMPT]|TOFILE<filename>

指定数据输出到何处,显示器,打印机,文件? 默认为输出到显示器。(3)关于范围选择子句

范围选择子句<scope>按指定的范围选择命令要操作的数据记录。它有四种形式:ALL:限定可对文件中的所有记录操作;NEXT<n>:对文件中当前记录之后的n个记录操作;REST:对文件中当前记录之后的剩余记录操作;RECORD<n>:限定只对文件中的第n个记录操作。(4)LIST和DISPLAY命令的差别当命令中无<scope>、FOR、WHILE子句时,

LIST默认为输出数据库中所有的记录;

DISPLAY仅输出当前记录。LIST为连续输出数据;

DISPLAY在输出结果满一屏时,系统自动暂停,按任意键后继续显示。(5)示例LISTFIELDSsno,name,majorFORgender="女"(5)示例GOTOPLISTsno,name,majorNEXT5(5)示例SKIPDISPLAY(5)示例DISPLAYALL7.显示表结构LISTSTRUCTURE

[IN<expN>|<expC>]

[NOCONSOLE]

[TOPRINTER[PROMPT]|TOFILE<filename>]DISPLAYSTRUCTURE

[IN<expN>|<expC>]

[NOCONSOLE]

[TOPRINTER[PROMPT]|TOFILE<filename>]第二节表达式表达式的构成:变量,常量,函数,运算符

类型,值变量:字段变量,内存变量函数:系统函数,用户定义函数运算符:P49,表2.6

算术运算符 关系运算符优先级

逻辑运算符运算对象 字符运算符(+,-)1.常量(1)数值型/货币型/浮动型/整型/双精度型常量:

100-305.231.05E+5字符型常量:双引号:"GoodMorning!"

单引号:'Good'

方括号:[Morning]1.常量(2)日期型常量:

{^yyyy-mm-dd}或{^yyyy/mm/dd}或{^yyyy.mm.dd}{^2001/09/26}日期时间型常量:

{^yyyy-mm-dd[hh[:mm[:ss]][a|p]]}{^2001/09/294:10p}逻辑型常量:真值:.T..Y..t..y.

假值:.F..N..f..n.2.变量字段变量: 可为任意数据类型。内存变量,可是如下数据类型:

N,数值型(货币型/浮动型/整型/双精度型) C,字符型(备注型) D,日期型

T,日期时间型

L,逻辑型 不能是通用型的。3.表达式示例(1)25+100-(12*8-7)+54/9数值42"Good

"+"afternoon!"字符串"Goodafternoon!""Good"-"afternoon!"字符串"Goodafternoon!"{^2004/10/01}>{^2004/09/26}逻辑真值{^2004/09/294:00p}>{^2004/09/298:00}

逻辑真值"abcd"="ABCD" 逻辑假值"abcd"="ABCD"AND50>10*4 逻辑假值"abcd"="ABCD"OR50>10*4 逻辑真值婚否=.F. 无效表达式NOT婚否 有效表达式3.表达式示例(2){^2004/10/01}+10日期2004年10月11日{^2004/03/01}-1日期2004年2月29日{^2004/10/01}-{^2004/09/26}数值5{^2004/09/294:10:00p}+10

日期时间型2004年9月29日下午4时10分10秒{^2004/09/294:10:00p}-30

日期时间型2004年9月29日下午4时9分30秒{^2004/09/298:10}-{^2004/09/298:00}

数值6004.显示表达式命令格式:?<Expr>示例:

?25+100-(12*8-7)+54/9?{^2004/10/01}+10?{^2004/10/01}-{^2004/09/29}?{^2004/09/294:10p}?{^2004/09/294:10p}-30?{^2004/10/01}>{^2004/09/26}?"abcd"="ABCD"OR50>10*4?"abcd"="ABCD"注:日期型/日期时间型变量定义格式和显示格式不一定相同。第三节记录指针FoxPro系统在数据输入时,依据其输入的先后顺序自动为每个记录赋予一个记录号,最先输入的记录的记录号为1,其次为2,依此类推。用户对表文件中某个数据项的访问,除要指定数据项所在字段(列)的字段名外,还要给出它所在的记录(行)。FoxPro系统内部有个用以指向当前操作记录(称为当前记录)的记录指针,通过记录指针定位命令,可将它移到预定的位置上。1.与记录指针有关的函数函数格式:RECNO([<expN>|<expC>])功能:返回指定表的当前记录号。返回值类型:N函数格式:EOF([<expN>|<expC>])功能:测试指定表的记录指针是否指向文件尾。返回值类型:L函数格式:BOF([<expN>|<expC>])功能:测试指定表的记录指针是否指向文件头。返回值类型:L*说明(设表中共有N条数据记录)记录物理顺序RECNO()EOF()BOF()表头第1条记录第2条记录……第k条记录……第N条记录表尾112……K……NN+1FFF……F……FTTFF……F……FF*示意图BeginofFlieEndofFlie123

…NEOF()=.T.→BOF()=.T.→RECNO()有效记录指针定位的几种方法记录指针绝对移动——GOTO命令记录指针相对移动——SKIP命令记录指针条件移动——LOCATE命令借助索引文件移动——SEEK命令(第三章)随着对记录操作的命令移动

LIST,DISPLAY,REPLACE,……2.记录指针绝对移动命令格式:

GO|GOTO[RECORD]<expN1>|TOP|BOTTOM[IN<expN2>|<expC>]解释:将记录指针直接移到指定的记录位置上。

[RECORD]<expN1>:记录号为<expN1>的任意记录;

TOP:表文件的首记录(逻辑顺序);

BOTTOM:表文件的最后一个记录(逻辑顺序)。记录顺序:物理顺序——与记录号一致,由输入顺序决定。 逻辑顺序——依据指定的数据项排序形成。 逻辑顺序和物理顺序可能一致,可能不一致。*示例1nn=RECNO()&&保存当前指针位置

…&&执行命令使记录指针移动了GOTOnn&&恢复原来指针位置

3.记录指针相对移动命令格式:

SKIP[<expN1>][IN<expN2>|<expC>]

解释:记录指针相对当前记录移动若干个数据记录。

<expN1>为正值,向表尾方向移动;

<expN1>为负值,向表头方向移动;

<expN1>为零,记录指针不动;

省略<expN1>,记录指针向表尾移动一个记录。*示例2GOTOPDOWHILE.NOT.EOF()...&&处理当前记录的一组命令

SKIP&&指针下移ENDDO或GOBOTTOMDOWHILE.NOT.BOF()...&&处理当前记录的一组命令

SKIP-1&&指针上移ENDDO*示例3——程序1CLEARUSEstudentGOTOPDOWHILE.NOT.EOF()DISPLAYSKIPENDDO*程序1执行结果4.记录指针条件移动命令格式:LOCATEFOR<expL1>[WHILE<expL2>] [<scope>][NOOPTIMIZE]解释:根据FOR或WHILE子句的条件,在表中按指定的记录范围顺序查找。若表中有符合条件的记录,则指针定位在最先遇到的满足条件的记录上,此时EOF()函数返回假值。若无符合条件的记录,此时当命令中无范围子句或指定的记录范围为ALL时,EOF()函数返回真值,记录指针指向文件尾;否则,EOF()函数返回假值,指针指向指定记录范围的最后一条记录上。CONTINUE命令:限定与LOCATE命令匹配使用,表示LOCATE命令的继续。*示例4LOCATEALLFORgender="男"ANDdno="01"?RECNO(),BOF(),EOF()

显示

1.F..F.CONTINUE?RECNO(),BOF(),EOF()

显示

2.F..F.CONTINUE?RECNO(),BOF(),EOF()

显示

4.F..F.CONTINUE...*示例5——程序2CLEARUSEstudentLOCATEALLFORgender="男"ANDdno="01"DOWHILENOTEOF() DISPLAY CONTINUEENDDO*程序2执行结果第四节数据记录的增删改增加数据记录:追加命令——APPEND命令

插入命令——INSERT-SQL命令删除数据记录:数据记录逻辑删除(加删除标志)——DELETE命令

数据记录物理删除——PACK命令

恢复数据记录(取消删除标志)——RECALL命令 清空表——ZAP命令修改数据记录:交互式修改数据记录——BROWSE命令

非交互式替换修改数据记录——REPLACE命令1.插入数据记录命令格式:INSERTINTO<dbf_name>[(<fieldname1> [,<fieldname2>,...])]

VALUES(<expr1>[,<expr2>,...])解释:在表尾插入一条数据记录。示例1:INSERTINTOstudent(sno,name,gender); VALUES("9503045","张丽","女")执行INSERT插入操作后显示结果2.删除数据记录数据记录的删除分:

——

逻辑删除(给记录加删除标志),DELETE

——

物理删除,PACK逻辑删除的记录可以恢复,RECALL物理删除的记录不可以恢复ZAP命令执行后数据记录将被物理删除,不可恢复。删除数据记录命令命令格式:DELETE[<scope>][FOR<expL1>][WHILE<expL2>][IN<expN2>|<expC>][NOOPTIMIZE]PACK[MEMO][DBF]RECALL[<scope>][FOR<expL1>][WHILE<expL2>][IN<expN2>|<expC>][NOOPTIMIZE]ZAP[IN<expN2>|<expC>]说明:不指定范围或条件,只对当前记录操作; 如果表的索引文件同时打开,则PACK命令自动重建索引;

ZAP命令等效于执行DELETEALL命令后接着执行PACK命令。*示例2a.DELETEFORRECNO()=21LIST

RECALLFORRECNO()=21LISTb.DELETEFORRECNO()=21LIST

PACKLIST执行DELETE删除操作后显示结果a.再执行RECALL操作后显示结果b.再执行PACK操作后显示结果3.修改数据记录命令格式:REPLACE<field1>WITH<expr1>[ADDITIVE][,<field2>WITH<expr2>[ADDITIVE]]…[<scope>][FOR<expL1>][WHILE<expL2>] [IN<expN2>|<expC>][NOOPTIMIZE]解释:计算——替换; 每个WITH前后的字段和表达式的类型须匹配;表达式中不允许引用未知的变量; 无范围和条件子句时,默认只替换当前记录; 适于对可计算的数据批量修改。*示例3USEstudentDISPLAYFORsno="9503045"REPLACEmajorWITH"有机化学",classWITH"951";FORsno="9503045"DISPLAYFORsno="9503045"*示例4(Salary.dbf替换修改前)*示例4USEsalaryREPLACEALL实发工资WITH基本工资+岗位工资; +津贴+奖金-扣款BROWSE*示例4(Salary.dbf替换修改后)第五节表的其他操作复制文件复制表结构文件操作设置默认存储路径备注型、通用型数据输入将表文件数据转换为其他类型的文件表文件与数组数据交换设置逻辑表1.复制文件命令格式:

COPYFILE<filename1>TO<filename2>解释:复制任何类型的文件。命令格式:

COPYTO<filename>解释:复制当前打开的表文件。示例1COPYFILEstudent.dbfTOstudent2.dbfCOPYFILEstudent.cdxTOstudent2.cdxCOPYFILEstudent.fptTOstudent2.fpt COPYFILEstudent.*TOstudent2.*COPYTOA:student.dbf2.复制表结构命令格式:COPYSTRUCTURETO<tablename> [FIELDS<fieldlist>] [[WITH]CDX|[WITH]PRODUCTION][DATABASE<dbname[NAME<tablename>]]解释:形成一个与当前表结构相同的新的空表。

FIELDS子句决定原表中哪些字段被复制到新表;

WITH子句决定与原表对应的索引文件是否被复制。示例2:COPYSTRUCTURETOstudent1; FIELDSsno,name,dno,class,majorWITHCDX3.文件操作文件改名删除文件列文件目录显示文本文件内容命令格式(P56,表2.12):

RENAME<filename1>TO<filename2> ERASE|DELETEFILE<filename> TYPE<filename> [TOPRINTER[PROMPT]|TOFILE<filename>] DIR|DIRECTORY[ON<drive>]

[[LIKE][<path>][<skel>]]

[TOPRINTER[PROMPT]|TOFILE<filename>]4.设置默认存储路径初始进入时的默认存储路径:

…/vfp98/设置个人默认存储路径:命令格式

SETDEFAULTTO<path>示例3

SETDEFAULTTO"c:\programfiles\;microsoftvisualstudio\vfp98\"5.备注型、通用型数据输入进入备注型、通用型数据编辑窗口:按<Ctrl+Home>或<Ctrl+PgUp>或<Ctrl+PgDn>键或双击相应数据项在通用型数据项上插入多媒体数据:编辑—插入对象新建—选对象类型由文件创建—输入对象文件名保存输入数据:按<Ctrl+W>键6.将表文件数据转换为其他类型的文件命令格式:COPYTO<filename>

[DATABASE<dbname>[NAME<longtablename>]]

[FIELDS<fieldlist>|FIELDSLIKE<skel>

|FIELDSEXCEPT<skel>][NOOPTIMIZE][Scope][FOR<expL1>][WHILE<expL2>]

[[WITH]CDX]|[[WITH]PRODUCTION]

[[TYPE][FOXPLUS|FOX2X|DIF|MOD

|SDF|SYLK|WK1|WKS|WR1|WRK|CVS|XLS|XL5

|DELIMITED[WITHDelimiter|WITHBLANK|WITHTAB|WITHCHARACTER<delimiter>]]]

[AS<codepage>]解释:将表文件中的数据复制到指定类型的文件中。 此命令与APPENDFROM命令对应。示例4:

COPYTOstud1WITHCDX

形成stud1.dbf和stud1.cdx文件

COPYTOstud2FIELDSsno,name,major,class

形成stud2.dbf文件

COPYTOstud3DELIMITEDFORdno="02“

形成stud3.txt文件7.表文件数据与数组数据转换-1命令格式:单个记录转换表中记录的数据转换为数组或内存变量SCATTER[FIELDS<fieldlist>|FIELDS LIKE<skel>|FIELDSEXCEPT<skel>][MEMO]

TO<arrayname>[BLANK]|MEMVAR[BLANK]

|NAME<objectname>[BLANK]数组或内存变量数据转换为表记录GATHERFROM<arrayname>|MEMVAR |NAME<objectname>

[FIELDS<fieldlList>|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>][MEMO]7.表文件数据与数组数据转换-2命令格式:多个记录转换表中记录的数据转换为数组或内存变量COPYTOARRAY<arrayname>[FIELDS<fieldlist>

|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>]

[<scope>][FOR<expL1>][WHILE<expL2>][NOOPTIMIZE]数组或内存变量数据转换为表记录APPENDFROMARRAY<arrayname>[FOR<expL>]

[FIELDS<fieldlist>|FIELDSLIKE<skel>

|FIELDSEXCEPT<skel>]8.设置逻辑表逻辑表的实现:设置过滤器——选择记录,SETFILTER命令设置字段表——选择字段,SETFIELDS命令命令格式:

SETFILTERTO[<expL>] SETFIELDSTO[<fieldlist>|ALL[LIKE<skel>|EXCEPT<skel>]] SETFIELDSON|OFF解释:SETFIELDSON|OFF命令决定字段表是否有效,ON为有效。SETFIELDS命令为隐式增加方式;不带参数的SETFILTERTO命令为取消过滤器的设置。不带参数的SETFIELDSTO命令将封锁对任何字段的操作。SETFIELDSTOALL命令为恢复对所有字段的操作。*示例5USEstudentSETFILTERTOdno="01"SETFIELDSTOsno,name,dno,majorSETFIELDSTOclassLIST示例6SETFIELDSTOLISTSETFIELDSTOALLEXCEPTA*,B*LISTSETFIELDSOFFLIST第三章索引与统计排序索引索引与查询数据工作期窗口索引的应用——表的关联统计运算SQL查询数据库与数据库视图第一节排序与索引关于数据记录的顺序:物理顺序:在数据记录输入时,依据记录输入的先后形成的顺序。记录的物理顺序与数据记录的记录号一致。

逻辑顺序:依据指定的数据项对表中数据记录排列顺序。 升序、降序关键字第一节排序与索引排序和索引是依据指定的数据项对表中数据记录重新排列顺序的两种不同方式。排序:用新生成的表文件保存排序结果,原数据文件不变,新文件按新的物理顺序存储数据记录。索引:用索引文件(CDX/IDX)保存排序结果,原表文件不变,借助索引文件表中数据记录按所形成的逻辑顺序被引用。索引文件中的数据是不可显示的,并且不可以单独使用,需与表文件同时使用。一个表文件可以对应有多个索引。1.排序命令格式:SORTTO<tablename>

ON<fieldname1>[/A|/D][/C]

[,<fieldname2>[/A|/D][/C]...]

[ASCENDING|DESCENDING]

[<scope>][FOR<expL1][WHILE<expL2>]

[FIELDS<fieldlist>

|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>]

[NOOPTIMIZE]解释:<fieldname1>——第一排序关键字

<fieldname2>——第二排序关键字

A——升序,D——降序,C——区分字母大小写*示例USEstudentSORTTOstud4ONdno/A,class/A

FIELDSsno,name,dno,major,classUSEstud4DISPLAYALL2.索引与索引文件索引是按照索引表达式使表中的记录有序排列的一种技术,它是借助索引文件实现的。使用数据库文件时,如果将相关的索引文件同时打开,则数据库的记录即按索引表达式值的逻辑顺序显示和操作(表中记录的物理顺序并没有改变),而且数据变化时,索引文件自动按索引表达式值调整。优点:减少数据冗余、动态反应数据的逻辑顺序、数据记录快速检索、建立表间的关联、支持Rushmore技术、RQBE查询和SQL查询等高效的数据库查询。3.索引类型有以下几种索引:普通索引:允许关键字重复;唯一索引:允许关键字重复,但输出时无重复值;候选索引:不允许关键字重复,输入重复值时系统将禁止;主索引:不允许关键字重复,输入重复值时系统将禁止。——仅对数据库表有效P71,表3.14.索引文件的类型有以下几种索引文件:一般索引文件——单条目索引,扩展名为IDX复合索引文件——多条目索引,扩展名为CDX *结构复合索引文件,与表文件同名压缩索引——IDX,CDX非压缩索引——IDX5.建立索引命令格式:INDEXON<expr>TO<IDXfilename> |TAG<tagname>[OF<CDXfilename>]

[FOR<expL>][COMPACT]

[ASCENDING|DESCENDING]

[UNIQUE|CANDIDATE][ADDITIVE]解释:当索引表达式<expr>中出现不同类型数据时,需归一成字符型的。 多条目的复合索引文件,需对文件中的每个索引条目命名,称为索引标识(TAG)。*命令解析INDEXON<expr>TO<IDXfilename> [FOR<expL>][COMPACT]

[ASCENDING|DESCENDING]

[UNIQUE|CANDIDATE][ADDITIVE]INDEXON<expr>TAG<tagname>OF<CDXfilename>]

[FOR<expL>]

[ASCENDING|DESCENDING]

[UNIQUE|CANDIDATE][ADDITIVE]INDEXON<expr>TAG<tagname>

[FOR<expL>]

[ASCENDING|DESCENDING]

[UNIQUE|CANDIDATE][ADDITIVE]*示例USEstudentINDEXONsnoTAGsnoOFstudcdxINDEXONdno+classTAGdnoclassOFstudcdxDISPLAYALLINDEXONnameTAGnameOFstudcdxDISPLAYALLINDEXONsnoTOstudidxADDITIVESETORDERTOTAGsnoDISPLAYSTATUS数据类型转换函数函数格式:STR(<expN1>[,<expN2>[,<expN3>]])功能:将数值型变量转换成字符型变量。说明:<expN1>被转换变量,<expN2>长度,<expN3>小数位。相反函数格式:VAL(<expC>)函数格式:DTOS(<expD>)功能:将日期型变量转换成字符型变量,转换格式为yyyymmdd。函数格式:DTOC(<expD>)功能:将日期型变量转换成字符型变量,转换格式为mm/dd/yy。相反函数格式:CTOD(<expC>)*示例a1=123.4567a2="210.32"a3=DATE()a4="04/10/16"b1=STR(a1,6,2)b2=VAL(a2)b3=DTOS(a3)b4=DTOC(a3)b5=CTOD(a4)

DISPLAYMEMORYLIKE*6.用表设计器建立索引方法一: 在字段选项卡的索引列组合框中设定。方法二: 使用索引选项卡设定。表设计器建立的为结构复合索引文件。7.打开索引结构复合索引文件随表文件自动打开;索引文件刚建立时是打开的;用命令打开。

表文件已打开,之后打开索引文件:

SETINDEXTO命令

表文件和索引文件同时打开:

USE…INDEX…

命令7.打开索引命令格式:SETINDEXTO[<indexfilelist>|?]

[ORDER<expN>|<IDXfilename>

|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]][ADDITIVE]USE[[<dbname>!]<tablename>|<SQLviewname>|?]

[IN<expN>|<expC>][ONLINE][ADMIN][AGAIN]

[NOREQUERY[nDataSessionNumber]][NODATA]

[INDEX[<indexfilelist>|?

[ORDER<expN>|<IDXfilename>

|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]]]]

[ALIAS<alias>][EXCLUSIVE][SHARED][NOUPDATE]8.关闭索引关闭表文件时,索引文件随之关闭;用命令关闭;结构复合索引文件只有在表文件关闭时才自动随之关闭,下述命令不能关闭结构复合索引文件。命令格式:

SETINDEXTO

只关闭当前非结构复合索引文件。

CLOSEINDEXES

关闭所有非结构复合索引文件。9.指定主索引标识主索引标识:当前起作用的索引标识,决定当前表中记录的逻辑顺序。方法:在打开索引文件时,用ORDER子句声明主索引标识;用SETORDERTO命令来指定主索引标识。9.指定主索引标识命令格式:SETORDERTO[<expN1>|<idxfile>| [TAG]<tagname>[OF<cdxfile>] [IN<expN2>|<expC>] [ASCENDING|DESCENDING]]说明:IDX索引:用IDX索引文件名CDX索引:用索引标识(TAG)物理顺序:数值零,即ORDER0关于索引标识的组织顺序索引标识的组织顺序是(从1开始编号):打开的IDX索引文件;结构复合索引文件中的索引标识(TAG);打开的非结构复合索引文件中的索引标识(TAG)。*在复合索引文件中,索引标识按创建先后顺序依次编号。*示例USEstudentORDERTAGsnoSETINDEXTOstudcdx

ORDERTAGnameSETORDERTOTAGsnoSETORDERTOTAGsnoOFstudcdxSETORDERTO010.删除索引删除索引文件,此时索引文件需关闭:

用ERASE命令。删除复合索引文件中的索引标识: 命令格式:

DELETETAG<tagname1>[OF<CDXfilename1>]

<tagname2>[OF<CDXfilename2>]...或

DELETETAGALL[OF<CDXfilename>]解释: 当用ALL删除复合索引文件的所有索引标识,这时索引文件也被删除了。11.索引更新自动更新 在索引文件打开时用INDEX命令重新建立索引和索引文件重新索引 命令格式:

REINDEX[COMPACT]解释: 对表文件中的数据重新索引,调整索引顺序。第二节索引与查询查询方式:顺序查询

LOCATE/CONTINUE命令索引查询

SEEK命令SQL查询

SELECT-FROM-WHERE命令*SEEK命令命令格式:SEEK<expr>[ORDER<expN>|<IDXfilename>

|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]] [IN<expN2>|<expC>]解释:<expr>——查询表达式,可以是字段,由字段构成的表达式,应与建立索引时的索引表达式对应;ORDER——指定索引检索的主索引标识;ASCENDING|DESCENDING——指定按升序或降序检索。*FOUND()函数函数格式:FOUND([<expN2>|<expC>])功能:返回SEEK命令的查询结果。返回值类型:L解释:查询到满足条件的数据记录,返回逻辑真值;未查询到满足条件的数据记录,返回逻辑假值;3.示例USEstudentINDEXstudcdxSETORDERTOsnoSEEK"9502003"?FOUND() &&.T.(8)SETORDERTOTAGdnoclassOFstudcdxSEEK"02953"?FOUND() &&.T.(16)SETORDERTOTAGnameOFstudcdxSEEK"田新"?FOUND() &&.F.第三节数据工作期

数据工作期是一个用来设置数据工作环境的交互操作窗口,它包括:

-打开的表

-打开的索引

-索引顺序

-表间关联

-一对多联系 可以用视图文件(*.VUE)保存所设置的数据工作环境。1.工作区(1)VFP允许同时使用多个表。对于每个正在使用的表,系统提供了各自的工作区。一个工作区上同时只能打开一个表,后打开的表文件将使该工作区上先打开的表文件自动关闭。

VFP6.0提供了32767个工作区。工作区标识:

*数值序号1~32767*前10个工作区还可用字母A~J*表名或别名(alias)。若在工作区中打开了表,则打开的表名或别名亦可作为工作区的标识。1.工作区(2)

最初进入FoxPro时,系统默认为第一工作区;可用SELECT命令选择工作区;最近选择的工作区为当前工作区。命令格式:

SELECT<expN>|<expC>解释:<expN>——工作区编号。当为零值时,即SELECT0,系统将自动从当前未用的工作区中选取区号最低者为当前工作区。<expC>——工作区别名,即文件名。1.工作区(3)VFP总是默认为对当前工作区打开的表操作,引用非当前工作区的字段变量时必须在其字段名前加工作区标识,即:

<alias>.<field>

或<alias>-><field>

VFP的命令或函数中的"IN<expN>|<expC>"选项,用来限制其操作的工作区,可使命令在不改变当前工作区的情况下,对由工作区号或工作区别名指定的非当前工作区中打开的表进行操作。*示例SELECT0&&选择工作区USEdeptORDERdno&&打开表dept及其索引SELECT0&&选择工作区USEstudentORDERsno

&&打开表student及其索引SETRELATIONTOdnoINTOdept &&建立表间关联LISTsno,name,dept.dname,dept.tele,major

&&显示当前和非当前工作区指定的字段USEINdept

&&在第二工作区关闭第一工作区的表文件2.数据工作期窗口打开数据工作期窗口 命令格式:

SET SETVIEWON

菜单方式: 窗口(W)—数据工作期(D)关闭数据工作期窗口 命令格式:

SETVIEWOFF

菜单方式:

文件(F)—关闭(O)3.视图文件建立视图文件 命令格式:

CREATEVIEW<filename>

菜单方式:

窗口(W)—数据工作期(D)打开视图文件 命令格式:

SETVIEWTO<viewfile>|?

菜单方式: 文件(F)—打开(O)—视图(*.VUE)4.表间关联关联:令不同工作区的记录指针建立一种临时的联动关系,使一个表记录指针移动时另一个表的记录指针随之移动。关联的条件:两个表:一个在当前工作区打开,称为父表;另一个称为子表,在非当前工作区打开,指针将随父表联动;两个表有相同的字段表达式;子表的字段表达式上要建立索引,并打开。关联关系:多对一:父表有多条记录对应子表中的一条记录;一对多:父表的一条记录对应子表中的多条记录。表间关联示意图DnoDnameDlocDmgrD-01D-02D-03D-04D-05EnoEnameTitleSalaryDnoE-001D-01E-002D-01E-003D-03E-004D-02E-005D-02E-006D-03E-007NullDepartmentTableEmployeeTable表间关联--示例*在数据工作期窗口建立关联步骤:打开数据工作期窗口;按《打开》按钮分别打开父表和子表;在“别名”列表框中选定父表,按《关系》按钮;在“别名”列表框中选定子表; 在“设置索引顺序”窗口中确定子表的主索引标识;

在“表达式生成器”窗口中指定父表的字段表达式;如建立一对多联系,按《一对多》按钮;浏览数据。在数据工作期窗口打开表选定父表确定子表的主索引标识指定父表的字段表达式浏览结果BROWSEFIELDS;

sno,,cno,course.subject,score

创建一对多关系*用命令建立关联命令格式及解释:SETRELATIONTO[<expr1>INTO<expN1>|<expC1> [,<expr2>INTO<expN2>|<expC2>…] [ADDITIVE]] <expr>为关联表达式,INTO子句指定子表,ADDITIVE子句将保持已存在的关联。

SETSKIPTO[<alias1>[,<alias2>]…]

设置一对多关系。SETRELATIONTO

取消父表和所有其他子表的关联。SETRELATIONOFFINTO<expN>|<expC>

只取消父表和指定子表的关联。*示例CLEARCLEARALLSETTALKOFFSELECT0USEstudentORDERTAGsnoSELECT0USEcourseORDERTAGcnoSELECT0USEscoreORDERTAGscnoSETRELATIONTOsnoINTOstudent,cnoINTOcourseBROWSEFIELDS;

sno,,cno,course.subject,scoreCLOSEDATABASESRETURN第四节统计运算计数统计——COUNT命令求累加和——SUM命令求平均值——AVERAGE命令分类汇总统计——TOTAL命令综合统计——CALCULATE命令1.计数统计命令格式:COUNT[Scope][FOR<expL1>][WHILE<ex

温馨提示

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

评论

0/150

提交评论