大学计算机答案.ppt_第1页
大学计算机答案.ppt_第2页
大学计算机答案.ppt_第3页
大学计算机答案.ppt_第4页
大学计算机答案.ppt_第5页
已阅读5页,还剩409页未读 继续免费阅读

下载本文档

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

文档简介

1、VFP程序设计基础,计算机教研室2#404 Email: QQ: 1394346386 讲 授:刘庆海,第1章 VFP数据库基础,本章学习目标: 掌握数据库、数据模型、数据库管理系统等基本概念; 掌握关系模型、关系模式、关系、元组、属性、域、主关键字和外部关键字等概念; 会使用投影、选择、联接等关系运算; 了解数据库的实体完整性、域完整性、参照完整性; 了解VFP系统的特点与工作方式、各种设计器和向导。,本章内容,信息及数据的处理 数据管理技术的发展 数据库系统的基本概念 数据库系统的特点 数据模型 关系的术语 关系的基本性质 关系的运算 关系的完整性约束,VFP数据库管理系统的特点 VFP的

2、启动与退出 VFP的系统界面 VFP常用的工具 VFP的工作方式 VFP的环境设置 VFP常用的文件类型 VFP的命令格式,1.1 数据库基础知识,1.2 VFP基本概述,VF数据库基础,1.1 数据库基础知识,信息及数据的处理 数据管理技术的发展 数据库系统的基本概念 数据库系统的特点 数据模型 关系的术语 关系的基本性质 关系的运算 关系的完整性约束,1.信息及数据的处理 (1)数据是指能被计算机识别和处理的物理符号,是信息具体化的表示形式,其形式多样化,如:文字、字母、数字、图形、图象、动画、声音等。 (2)信息是客观事物的特征在人脑中的反映,是经过加工处理并对人类客观行为产生影响的数据

3、表现形式。,1.1 数据库基础知识,(3)数据处理是对原始数据进行各种加工处理,使之成为可利用的、有价值的信息。数据管理是数据处理的核心,它主要是指对数据进行分类、排序、编码、存储、检索和维护等操作。,2. 数据管理技术的发展,数据管理技术经历了由低级向高级的发展过程。这一过程一般可以分为三个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。,1)人工管理:数据不保存,数据不具有独立性,数据面向程序,一组数据对应一组程序,无法被其他程序利用,存在大量的冗余数据。,2)文件系统:数据可长期保存,由文件系统管理数据,但数据共享性差,冗余度大;程序与数据有了一定的独立性,但独立性差,容易产生不一致性

4、。,3)数据库系统:数据采用统一的结构存放,具有集成性、高度共享性、低冗余度、高度独立性,并能避免数据之间的不相容性和不一致性。,数据库管理示意图,数据管理三个阶段的比较,新兴阶段:数据仓库,数据库系统和数据仓库系统的区别,3、数据库系统的基本概念,1)数据库DB(DataBase) 是存储在计算机中结构化的相关数据的集合。它不仅包含描述事物的数据本身,而且包含数据之间的联系。在VFP中,数据库是存放表(Table)、视图(View)及其联系的容器。 2)数据管理系统(DBMS) 是建立、维护、使用和管理数据库的软件。常用的中小型数据库管理系统有SQL Server,dBase、FoxBase

5、,FoxPro,Visual FoxPro,Access等。DBMS具有数据库描述(DDL)、操纵(DML)和控制(DCL)的功能。,DB=数据本身+数据间的联系,3)数据库系统 是指引入数据库技术后的计算机系统。它由数据库、硬件系统、数据库管理系统及其相关软件、数据库管理员(DBA,DataBase Administrator)和其他用户五部分组成。数据库系统的核心是数据库管理系统。 4)数据库应用系统 是为了解决某个实际问题,开发人员利用DBMS编写的应用软件,例如教学管理软件、财务管理软件等。,1)数据结构化(即采用特定的数据模型)是数据库系统与文件系统的本质区别。 2)数据共享性高、冗

6、余度低、易扩充。 3)具有较高的数据独立性。 4)数据由DBMS统一管理和控制。,4、数据库系统的特点,从客观事物到信息,再到数据,是人们对现实世界的认识和描述过程,需要经历现实世界、信息世界和数据世界(也称为机器世界、计算机世界)这三个世界的转换。,5. 数据模型,概念模型:从客观事物到信息,把现实世界中的客观对象抽象为概念模型(也称信息模型),它是按用户的观点来对数据和信息建模。 数据模型:从信息到数据,把信息世界中的概念模型转换为数据世界中某一DBMS支持的数据模型,它是按计算机系统的观点对数据建模。,(1)信息模型,1)实体:客观存在并可相互区别的事物,如:工人、王楠、学生、班级等 2

7、)实体集:同类型实体的集合称为实体集。例如一个班的全体学生就是一个实体集。 3)属性:描述实体的特性。 4)实体型:属性的集合表示一种实体的类型,称为实体型。 5)联系:实体之间存在的对应关系,反映客观事物的相互关联。,实体-联系模型,最常用的概念模型是实体-联系模型,常采用E-R图(Entity-Relation)建模,所以实体模型有时被简称为E-R模型。E-R模型图用矩形、椭圆和菱形分别表示实体、属性和联系。,实体名,属性名,属性名,实体名,属性名,属性名,联系名,联系的3种类型,一对一联系(1:1): 学生与学号之间具有一对一联系。 一对多联系(1:n): 班级与学生之间具有一对多联系。

8、 多对多联系(m:n):课程与学生之间具有多对多联系。,班级,班级-班长,班长,1,1,1:1联系,课程,选修,学生,m,n,m:n联系,班级,组成,学生,1,n,1:n联系,(2)数据模型,数据模型是在计算机世界中建立的模型,该模型由数据结构、数据操作和完整性约束三部分组成。典型的数据模型主要包括层次模型、网状模型、关系模型等。,1)层次模型:以属性结构为基础的数据结构,具有明显 的上下层的关系,模型简单、直观、处理方便,但不能处 理多对多联系的复杂模型。,层次模型是用树型结构来表示数据之间的联系。,2)网状模型:以网络结构为基础的数据结构,可以表示复杂的数据结构,但实现的算法比较难规范。,

9、网络模型是用网络结构来表示数据之间的联系,可以表示多对多的联系。,3)关系模型:以二维表格为数据的表示方式,表格中同一行的为一条记录,同一列的为一个数据项或称字段,一个表格对应一个关系,多个关系组成一个关系模型。,特点: (1)表格中的每一列都是不可再分的基本属性; (2)各列被指定一个相异的名字; (3)各行不允许重复; (4)行、列的次序无关。,关系模型 = 数据结构 + 关系运算 + 完整性约束。,(1)关系:一张二维表,在VFP中一个关系就称为一个数据表。 (2)元组:指表中一行上的所有数据,在VFP中一行称为一个记录。 (3)属性:指表中的一列,在VFP中一列称为一个字段。 (4)域

10、:指表中属性的取值范围,在VFP中字段的取值称为一个字段的宽度。 (5)关系模式:对关系的描述,一个关系模式对应一个关系的结构,其格式为:关系名(属性1,属性2,属性3,属性n),6.关系的术语,一个关系模型由若干个关系模式组成。,(6)关键字或码(Key):表中用来唯一确定(标识)一个元组的某个属性或多个属性的组合。 如学号可作为学生表的码、学号和课程号的组合可作为选课表的码 。 一个关系中的关键字必须唯一,关键字的值不能为空,即关键字的值为空的元组或重复的元组在关系中是不允许存在的。,关键字的种类,候选关键字(候选码) 如果一个关系中存在多个属性或属性组合都能用来唯一标识该关系的元组,这些

11、属性或属性组合都称为该关系的候选关键字或候选码。 主关键字(主码) 在一个关系的若干个候选关键字中指定作为关键字的属性或属性组合称为该关系的主关键字或主码。 非主属性(非码属性) 关系中不组成码的属性均为非主属性或非码属性。 外部关键字(外键) 当关系中某个属性或属性组合虽不是该关系的关键字或只是关键字的一部分,但却是另外一个关系的关键字时,称该属性或属性组合为这个关系的外部关键字或外键。,主表与从表是指以外键相关联的两个表;以外键作为主键的表称为主表,外键所在的表称为从表。,学生表,课程表,课程号是学生关系的外关键字,不是关键字,但是课程关系的关键字,术语的比较,1)同一个关系中不能出现相同

12、的属性名 2)关系中不允许有完全相同的元组 3)关系中各行的次序、各列的次序不要求。 4)关系必须规范化,每个属性必须是不可分割的数据 单元,即表中不能再包含表。,7.关系的基本性质,在关系模型中,实体以及实体间的联系采用了单一数据结构关系来表示。对数据的操作就是对关系的运算,即对记录的集合进行操作。 关系的运算可分为两类:传统的集合运算(交、差和并)和专门的关系运算(选择、投影和连接)。,8.关系的运算,1)并:两个关系的所有元组组成的集合 2)交:两个关系共有的元组的集合 3)差:设两个关系R和S,R差S的结果是由属于R但不 属于S的元组组成的集合,要求进行运算的两个关系必须具有相同的关系

13、模式,即相同的结构。,1.传统的集合运算,1)选择运算:选择运算是根据给定的条件,从一个关系中选出若干个元组组成一个新的关系,其关系模式不变。 选择运算是关系的横向操作,不改变原关系模式,即行数改变(二维表的高度减小),列数不变(二维表的宽度不变)。 在VFP中的短语FOR条件和WHILE条件均相当于选择运算。,2.专门的关系运算,姓名、出生日期和专业(学生表),2)投影运算是从一个关系中指定若干个属性组成新的关系,并可以重新安排列的顺序。 投影运算就是关系的纵向操作,改变了原关系模式,即列数改变。 在VFP中短语FIELDS字段1,字段2,相当于投影运算。,2.专门的关系运算,姓名、出生日期

14、和专业 (学生表),3)联接运算是将两个关系通过公共的属性拼接成一个更宽的关系,生成的新关系中包含满足联接条件的元组。运算过程是通过联接条件实现关系的横向组合。在VFP中,有单独一条短语JOIN就可以实现两个关系的联接运算。等值联接和自然联接是最常用联接运算。 等值联接 在联接条件中使用等号(=)运算符比较被联接列的列值,其联接结果中列出被联接表中的所有列,包括两表的重复属性。只要求属性值相等,不要求属性名相同。 自然联接 去掉重复属性的等值联接。既要求属性值相等,也要求属性名相同。,关系运算小结,如果需要两个以上的关系进行联接,应当两两进行。利用关系(表)的这三种专门运算可以方便地构造各种新

15、的关系(表)。,9.关系的完整性约束,数据库完整性是指数据库中数据的正确性和相容性。,关系的完整性主要有域完整性、实体完整性和参照完整性三种。,数据库完整性由各种各样的完整性约束来保证。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。,数据结构简单 , 格式描述统一 , 概念清除。 能反映实体之间的一对一、一对多、多对多 三种联系。 有严格的数学理论基础。 易学习, 易理解, 符合使用习惯。,补充内容1: 关系模型的优点,包括结构设计和行为设计。 结构设计:主要确定数据库和数据表 行为设计:主要确定某种程序设计方法和使用某种语言来编写应用

16、程序。,补充内容2: 数据库设计基础,1. 数据库设计内容,概念单一化:数据表结构要简单、明晰, 应避免大而杂。 避免重复字段:除外部关键字外, 应尽量减少不同表中的重复字段。 表中保存原始数据:应避免出现通过计算可得到的字段。 合理设计关键字:通过主关键字和外部关键字建立不同表之间的联接.,2、数据库设计原则,需求分析:信息需求、处理需求、安全性和完整性需求 确定需要的表 确定所需的字段 确定联系:一对一的联系、一对多的联系、多对多的联系 设计求精,3. 数据库设计步骤,需求分析:信息需求; 处理需求; 安全与完整性需求. 结构设计:数据库 表 字段 关键字 表间联系; 系统设计实施:建立库

17、、表结构; 设计、编写应用系统功能模块; 调试应用程序.,3. 数据库设计过程,例1.1 设人事管理关系模型中有下列关系模式: 1. 部门( 部门编号,部门名称, ) 2. 职工情况( 职工编号, 姓名,性别,出生日期,学历,职称,) 3. 工资( 职工编号,基础工资,职务津贴,奖金,水电费, ),补充内容3:关系模型举例,由部门、职工情况、工资三个关系模式构成的关系模型如下:,例1.2 设图书借阅关系模型中有下列关系模式: 1. 图书(书编号,书名,作者,出版社,单价,分类号,) 2. 借阅(书编号,借书证号,借阅日期, ) 3. 学生( 学号,姓名,班级, ),由图书、借阅登记、学生三个关

18、系模式构成的关系模型如下:,学生表,1.2 VFP基本概述,VFP数据库管理系统的特点 VFP的启动与退出 VFP的系统界面 VFP常用的工具 VFP的工作方式 VFP的环境设置 VFP常用的文件类型 VFP的命令格式,1. VFP数据库管理系统的特点,VFP是一个运行于Windows98以上32位操作系统平台上、基于Windows操作系统的小型关系数据库管理系统。 VFP既可以进行数据的管理,又可以进行数据库应用软件的开发。 不仅支持传统的面向过程的编程技术,而且支持可视化的、面向对象的编程技术。,2. VFP的启动与退出,(1) VFP的启动(演示) (2) VFP的退出(演示),特有关闭

19、法: “命令”窗口输入QUIT命令并回车,3. VFP的系统界面,正常启动VFP系统后进入VFP主窗口,它由标题栏、菜单栏、常用工具栏、状态栏、命令窗口和主窗口工作区组成。,显示工具栏:执行“显示”“工具栏”菜单命令,打开“工具栏”对话框,选择所需打开的工具栏。 重设工具栏:在“工具栏”对话框中,单击“重置”按钮,然后单击“定制”按钮,进入“定制工具栏”对话框,可以配置各工具栏中的工具按钮。,(1)工具栏,(2)命令窗口,命令窗口是输入、编辑并执行VFP系统命令的窗口。 显示和隐藏命令窗口 执行“窗口”“命令窗口”菜单命令可以打开命令窗口。 在命令窗口中可以进行命令行的编辑、执行等操作。,4.

20、 VFP常用的工具,项目是指文件、数据、文档和VFP对象的集合,包括表、数据库、表单、报表、查询、类、程序等。 项目管理器则是将一个应用程序的所有文件都集合成一个有机的整体,形成一个扩展名为.pjx的项目文件。,(1) 项目管理器,通过右侧的按钮可以实现各种项目文件的新建、修改、添加或移去等一系列操作。,向导把一些复杂的操作分解为若干简单的步骤来完成,每一步使用一个对话框。用户只要逐步回答向导提出的问题,向导便可以自动替你完成相应的任务。 通过“工具”菜单“向导”子菜单即可启动向导。 常用的向导设计器有表向导、报表向导、表单向导、查询向导等。,(2) 向导,设计器是VFP提供给用户的交互式的可

21、视化开发工具设计器,集成了用于设计对象的各种操作,并赋予可视化提示,为用户提供了一个友好的图形界面。 用户可以通过设计器创建并定制数据表结构、数据库结构、报表格式和应用程序组件等。 常用的设计器有表设计器、查询设计、视图设计器、列表框生成器、报表设计器、数据库设计器、菜单设计器等。,(3) 设计器,生成器是带有选项卡的对话框, 为对象方便、快速地设置一些辅助选项,用于简化对表单、复杂控件和参照完成性代码的创建和修改过程,如帮助用户对特定的对象设置属性或者组合子句创建特定的表达式等。 与向导不同,生成器是可重入的,可以不止一次地打开某一对象的生成器。 常用的生成器有组合框生成器、命令组生成器、表

22、达式生成器、列表框生成器等。,(4) 生成器,5. VFP的工作方式,VFP有两类工作方式:交互方式(单命令)和程序方式(批命令),其中前者又分为菜单方式和命令方式,总共3种工作方式。,通过右侧的按钮可以实现各种项目文件的新建、修改、添加或移去等一系列操作。,选择菜单中的命令或工具栏按钮,即可执行命令完成工作。VFP菜单是一种动态菜单,它会随着打开文件的不同而改变。 VFP共有11个菜单,通常只显示其中的一部分菜单。,(1) 菜单方式,(2)命令方式,在命令窗口中直接输入命令,回车即可执行。,命令窗口的操作,显示|隐藏, 命令窗口右上角关闭按钮关闭,“窗口”中的“命令窗口”打开。 用常用工具栏

23、上的命令窗口按钮显示或隐藏。 Ctrl+F4关闭命令窗口,Ctrl+F2显示。,A在命令窗口中输入命令,按回车键后即执行该命令。(执行) B若命令行太长,可用半角分号“; ”续行。VFP命令是以回车符来结束的。(续行) C执行过的命令将保留在命令窗口中,如果需要再次执行前面输入过的命令,只要将光标移到该命令行的任意位置,按回车键即可。(重复) D可以对命令窗口中的命令进行编辑(修改、复制、粘贴等)操作。(编辑) E在命令窗口中选定若干条命令,按回车键,则连续执行所选命令。(批量执行) F若需清除主窗口工作区的内容,可用clear命令。(清屏) G关于命令窗口的其他操作可以右击命令窗口,从快捷菜

24、单中选择“属性”命令,再“编辑属性”对话框中进行设计即可。(设置显示属性),注意事项,6. VFP的环境设置,VFP安装完毕之后,自动使用系统默认的环境参数值。用户可以根据实际需要和个人习惯设置个性化的应用开发环境,这些环境参数可以通过执行“工具”菜单的“选项”命令,再在“选项”对话框的“XXX”选项卡进行设置即可,还可以通过VFP的SET命令进行设置。,永久性设置, 临时设置: 更改仅保存于内存中, 退出 VFP 会丢失所有临时设置; 再启动 VFP 即恢复系统默认值. 永久设置: 更改保存于注册表而成为系统默认值. 操作: 环境设置修改后, 单击“设置为默认值”“确定”.,环境设置的保存,

25、常用的环境设置,设置默认目录,设置日期的显示格式,SET TALK TO 目录,SET DATE TO 格式,显示4位年(xxxx),SET CENTURY ON,设置帮助文件,SET HELP TO 帮助文件,设置排序序列,SET STRICTDATE TO,显示状态栏,SET STATUS ON,7. VFP常用的文件类型,8. VFP的命令格式,VFP的命令都有固定格式,必须按相应的格式和语法规则书和使用,否则无法识别及执行。一般情况下,VFP命令总是由命令动词(命令的功能)开头,后面接一个宾语(命令的操作对象)和若干短语(命令的操作范围、操作结果)。 命令动词表示做什么,必须写在命令的

26、开头;短语又称子句,表示操作的对象以及怎么做,其位置任意。命令动词与子句之间、各子句之间都以空格分隔。当命令一行书写不完时,可在行尾用分号“;”进行续行,便可在下一行继续书写。VFP的命令词不区分字符的大小写。, ,(1)VFP命令的基本格式,:必选顶,表示命令中必须书写该项,但内容可以根据需要确定。 :可选项,可根据实际需要选用或省略该项内容。 | :任选项,根据实际需要任选且必选其中一项内容。,【说明】,(2)VFP命令的常用子句,相当于关系运算中选择运算。按指定运算逻辑条件选择表中符合条件的记录,共有4种范围子句: RECORD :范围是记录号为N的一条记录。 NEXT :范围是从当前记

27、录开始的连续N条记录(包括当前记录)。 REST:范围是从当前记录开始到表尾的所有记录(包括当前记录)。 ALL:范围是表中的全体记录。, 范围子句,对应于关系运算中选择运算。以指定逻辑条件为依据,从表中选择符合条件的记录。条件子句有两种: FOR :选择表中符合条件的所有记录。 WHILE :选择符合条件的记录,直到第一个不符合条件的记录为止,其中,由一个逻辑表达式或关系表达式构成,其值为逻辑型数据。, 条件子句,对应于关系运算中的投影运算。从表中选取命令操作的字段范围。其中字段名表由若干个以逗号分隔的字段名构成。关键字FIELDS有时可省略。 【格式】FIELDS , FIELDS子句,第

28、2章 VFP语言基础,本章学习目标: 掌握VFP的基本数据元素:常量、变量、函数、表达式等; 掌握并熟练使用VFP的常用函数。,数据的内涵,数据是数据库管理系统操作和管理的对象,记录了客观事物的属性。其内涵包括两方面:数据内容和数据形式。 数据内容用于描述客观事物的特征,即数据的“值”; 数据形式是指数据内容存储于媒体中的形式和使用方式,即数据的“类型”。 在VFP中,数据可以存放在常量、变量、数组、字段、记录和对象等数据容器中。,常用的数据类型,数据表的字段可使用全部的数据类型,而常量和内存变量只能使用字符型C、数值型N、货币型Y、日期型D、日期时间型T和逻辑型L这6种类型的数据。,【说明】

29、,1.字符型(Character,简写为C) 字符型数据是不具计算能力的文字数据类型。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(字符个数)范围是0254个字符。其界定符有单引号( )、双引号(“ ”)、方括号( )三种。 2.数值型 数值型数据是表示数量、可以进行数值运算的数据类型。数值型数据由数字、小数点、正负号和表示乘幂的字母E组成,在内存中占用8个字节,数据长度(数据位数)为120位,数值精度可达16位。 在VFP系统中,按存储、表示形式与取值范围不同,数值型数据又分为数值型(Numeric)、浮点型(Float)、双精度型(Double)、整型(Integ

30、er)四种不同类型。,2.1 数据类型,勘误(P20):相互兼容的数据类型之间才能进行运算。,(1)数值型(Numeric,简写为N) 数值型数据由数字小数点正负号和字母E组成,用字母N表示数值型数据的取值范围是:-0.9999999999E-19到0.9999999999E+20,包括正负号小数点和字母E在内,其长度最大20位,通常用于表示实数 (2)浮点型(Float,简写为F) 浮点型数据是数值型数据的一种,用字母F表示它与数值型数据完全等价,只是在存储形式上用浮点格式,主要是为了得到较高的计算精度 (3)双精度型(Double,简写为B) 双精度型数据是具有更高精度的一种数据型数据它采

31、用固定长充浮点格式存储,占用8个字节,其小数点的位置是由输入的数据值来决定的。 (4)整型(Integer,简写为I) 整型数据是不包含小数部分的数值型数据。整型数据只用来表示整数,以二进制形式存储,占用4个字节,所以整数字段类型比其他段类型占据的存储空间小,而且不需做ASCII 码的转换。,勘误(P21):0.9999999999E-19到0.9999999999E+20,3. 日期型(Date,简写为D) 日期型数据是表示日期的数据,长度固定为8个字节,年月日之间的分隔符不占字节。 其定界符为花括号( 或者 ),输入格式可采用严格日期格式yyyy-mm-dd或传统日期格式mm/dd/yyy

32、y。“”是严格日期格式的标志,并按照 YMD 的格式解释日期型和日期时间型数据,其中“yyyy”代表“年”,“mm”代表“月”,“dd”代表“日”,年月日之间的分隔符可以是连字符“-”、斜杠“/”、点号“.”和空格等符号。,勘误(P20):相互兼容的数据类型之间才能进行运算。,VFP系统默认采用严格的日期格式,并以此检查所有日期型和日期时间型数据的格式是否规范、合法。为与早期版本兼容,用户通过命令或菜单设置改变这一格式。命令设置的格式:SET STRICTDATE TO 0 | 1 | 2,其中0表示不进行严格的日期格式检查;1表示进行严格的日期格式检查,它是系统默认的设置;2表示进行严格的日

33、期格式检查,并且对CTOD()和CTOT()函数的格式也有效;省略0 | 1 | 2表示恢复系统默认值,等价于1的设置。 日期型数据的显示格式有多种,具体使用哪一种格式主要与日期格式的设置(SET CENTURY ON|OFF设置是否显示世纪年份、SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | USA | MDY | DMY | YMD | SHORT | LONG设置日期显示格式)相关,日期的默认显示格式是mm/dd/yyyy。至于年、月、日之间显示的分隔符可以用SET MARK TO 来设

34、置。,日期型说明,4.日期时间型(DateTime,简写为T) 日期时间型数据是表示日期和时间的数据,长度固定为8个字节。其定界符为花括号( 或者 ),年、月、日分隔符与日期型数据分隔符相同,时、分、秒之间用“:”分隔,日期与时间之间用空格或逗号“,”分隔。如输入格式可用 yyyy-mm-dd hh:mm:ss am|pm来表示,“hh”代表“小时”,后面的“mm”代表“分钟”,“ss”代表秒。 其显示格式有多种,具体使用哪一种格式主要与日期格式的设置相关。,5.逻辑型(Logical,简写为L) 逻辑型数据是描述客观事物真假的数据类型,表示逻辑判断的结果。其定界符为圆点(.),表示逻辑值的字

35、母前后的圆点不能省略。逻辑型数据只有真(.T.、.t.、.Y.或.y.)和假(.F.、.f.、.N.或.n.)两种,长度固定为1个字节。 6.货币型(Currency,简写为Y) 货币型数据用来存储货币值,长度固定为8个字节,最多保留4位小数。,7.备注型(Memo,简写为M)和通用型(General,简写为G) 备注型用于存储较多的字符,可看作是字符型数据的特殊形式,用字母M表示。通用型用于存储OLE(对象链接嵌入)对象,用字母G表示。 通用型数据中的OLE对象可以是照片、电子表格、声音、图表及字符型数据等。 记录在备注型或通用型字段中的信息,并不存放在数据表文件中,实际数据存放在与表主文件

36、名相同但扩展名为.FPT的文件中,所以没有数据长度限制,仅受限于磁盘空间。 备注型和通用型数据所占用的长度固定为4个字节的空间用于存放.FPT文件的地址,该文件会自动生成并伴随表文件的打开而自动打开。,1. 常量:在程序运行过程中其值固定不变的数据,VFP中有字符型、数值型、浮点型、逻辑型、日期型和日期时间型6种类型的常量。 1)字符型常量:用定界符括起的字符串,定界符有单引号、双引号和方括号。 如:1,“ASDF”,123GHJK 2)数值型常量:如123,3456.7832, -1234.698 3)浮点型常量:如145E+12, -3.45E-3,2.2 常量和变量,4)日期型常量:用大

37、括号括起,如1999-04-12 传统的日期格式:缺省格式“mm/dd/yy”,月、日都为两位数,年份可以2位或4位。这种格式受命令语句的设置影响。 Set date to USA/DMY/YMD Set Century on/off: 严格的日期格式:1980-03-14,该格式不受命令的影响,可以在任何情况下使用,除了在表中输入数据以外。,5)逻辑型常量:用圆点定界符括起, 如.T. , .F. , .Y. , .N. , .t. , .y. , .n. , .f. 6)日期时间型常量:如03-14-99 12:23:11 7)货币型常量 货币型常量用于表示货币值,表示形式与数值型常量相似

38、,但不能用科学记数法,且小数点后最多取四位。在表示时可用“$”开头,如$568.30。,定界符必须是英文半角字符 不同定界符可以互相嵌套的,但不允许交错出现,2. 变量:在命令操作和程序运行过程中其值可以改变的量。 VFP变量可以分为字段变量、内存变量,其中内存变量又可分为简单的内存变量、数组变量、系统变量。 变量的命名规则: (1) 必须以字母、汉字或下划线开头,不能含有空格,如3m、2 a是不合法的。 (2) 由数字、字母、汉字和下划线组成,如x、a2、城市、Class_1都是合法的。 (3) 长度为1128个字符,每个汉字占2个字符。 (4) 不能使用VFP的保留字,如DELETE、CR

39、EATE等都是不合法的。,常量的类型:,注意:当内存变量与字段变量同名时,优先访问字段变量。若要访问内存变量需要在变量名前面加上前缀M-或M. ,以区别于字段变量。但对内存变量赋值时不能加前缀,系统默认为内存变量。 例2.1:USE 学生表 学分 I, 学时 I,先行课 C(4) 【例4.3】用SQL CREATE命令建立选课表。 CREATE TABLE 选课表(学号 C(9), 课程号 C(4), 成绩 F(5,2),2. 修改表结构 修改表结构要使用ALTER TABLE命令,该命令有三种格式。 (1)格式1:ALTER TABLE ADD | ALTER COLUMN (,) NULL

40、 | NOTNULL CHECK ERRORDEFAULT PRIMARY KEY | UNIQUEREFERENCES TAG 功能:为指定的表添加字段或修改已有的字段。,注意:使用该格式可以修改字段的类型、宽度、有效性规则、错误信息、默认值,定义主关键字和联系等;但是不能修改字段名,不能删除字段,也不能删除已经定义的规则。 【例4.4】为学生表增加一个备注类型的家庭住址字段。 ALTER TABLE 学生表 ADD 家庭住址 M 【例4.5】将学生表的姓名字段的宽度由原来的8改成6。 ALTER TABLE 学生表 ALTER 姓名 C(6),(2)格式2: ALTER TABLE ALT

41、ER COLUMN NULL | NOTNULL SET DEFAULT SET CHECK ERROR DROP DEFAULTDROP CHECK 功能:修改指定表中指定字段的DEFAULT和CHECK约束规则。,【例4.6】修改或定义学分字段的有效性规则,要求学分大于零,否则提示错误信息。 ALTER TABLE 课程表 ALTER 学分 SET CHECK 学分0 ERROR 学分该大于0! 【例4.7】删除学分字段的有效性规则。 ALTER TABLE 课程表 ALTER 学分 DROP CHECK,(3)格式3: ALTER TABLE DROP COLUMN SET CHECK

42、ERROR DROP CHECK ADD PRIMARY KEY TAG FOR DROP PRIMARY KEY ADD UNIQUE TAG FOR DROP UNIQUE TAG ,【例4.8】将学生表的家庭住址改名籍贯。 ALTER TABLE 学生表 RENAME COLUMN 家庭住址 TO 籍贯 【例4.9】删除学生表中的籍贯字段。 ALTER TABLE 学生表 DROP COLUMN 籍贯 【例4.10】将选课表的学号和课程号定义为候选索引,索引名是S_C。 ALTER TABLE 选课表 ADD UNIQUE 学号+课程号 TAG S_C 【例4.11】删除选课表的候选索引

43、。 ALTER TABLE 选课表 DROP UNIQUE TAG S_C,3. 删除表 【格式】DROP TABLE 【说明】删除表时最好打开相应的数据库,在数据库中完成操作。 【例4.12】删除选课表。 DROP TABLE 选课表,4.2 数据操作,数据操纵主要包括添加、删除和修改等数据处理。 1、插入记录 插入(追加)记录的方法,可以直接用表达式给新插入记录的各字段赋值,也可以使用数组或内存变量给新记录的字段赋值。 【格式1】INSERT INTO VALUES () 【例4.13】向学生表中插入元组(200602218, 李明,男,1988-07-15,机电一体化)。 INSERT

44、INTO 学生表 VALUES(200602218, 李明,男,1988-07-15,机电一体化),【格式2】INSERT INTO FROM ARRAY | FROM MEMVAR 将数组或内存变量的值赋给表文件中的各字段。 【例如】用数组方式追加记录: DIMENSION arr(5) arr(1)=200605011 arr(2)= 夏雨薇 arr(3)= 女 arr(4)=1989/09/02 arr(5)= 06国际贸易 INSERT INTO 学生表 FROM ARRAY arr 注意:数组元素序号与字段序号对应,若某个数组元素没有赋明确的值,则相应的字段为默认值或空值。,用内存变

45、量方式追加记录: 学号=200626068 姓名=柳依依 性别=女 专业=06社会工作 出生日期=1989/02/21 INSERT INTO 学生表 FROM MEMVAR 注意:内存变量的名称必须与字段名相同。如果同名的内存变量不存在,则相应的字段为默认值或空值。,2、更新记录 【格式】UPDATE SET =, = WHERE 【功能】更新指定表文件中满足WHERE条件的记录数据。其中SET子句用于设置指定字段和修改的值,WHERE子句用于指定更新的记录,如果省略WHERE,则更新表中所有记录。,【例4.14】给所有学生出生年份加1。 UPDATE 学生表SET 出生日期=DATE(YE

46、AR(出生日期)+1),; MONTH(出生日期),DAY(出生日期) 【例如】将选课表中所有课程号为0002的成绩加上5分,然后再将选课表中所有记录的成绩提升10%。 UPDATE 选课表 SET 成绩 = 成绩 + 5 WHERE 课程号=02 UPDATE 选课表 SET 成绩 = 成绩 * (1+ 0.1),3、删除记录 【格式】DELETE FROM WHERE 【说明】WHERE指定被删除的记录应满足的条件,没有WHERE子句则删除表中的全部记录。此命令执行逻辑删除,即在删除的记录前加上删除标记“*”,若想物理删除记录,则需要接着使用PACK命令。 【例4.15】删除李明的学生信息

47、。 DELETE FROM 学生表 WHERE 姓名=李明 【例如】删除学生表中所有88年出生的记录。 DELETE FROM 学生表; WHERE YEAR(出生日期) =1988,4.3 数据查询功能,SQL查询可以完成单表或多表中数据的查询处理,采用 Select语句结构完成查询。该语句即可以在命令窗口单独执行,也可以嵌入在程序中完成查询处理。 【格式】 SELECT ALLDISTICT 别名. 输出项 AS 列名, 别名. 输出项 AS 列名 FROM , , WHERE GROUP BY HAVING ORDER BY ASCDESC,【功能】根据where子句中的条件表达式,从指

48、定的表或视图中找出满足条件的元组,按照select子句中指定的列和顺序显示查询到的元组结果。 【说明】Select子句:说明要输出的结果元组中需要的字段 From子句:说明查询的数据来源,包括表和视图 Where子句:说明查询的条件,Group by子句:用于对查询结果进行分组,可以利用分组进行分组汇总 Having子句:与group by结合使用,用于限定分组必须要满足的条件。 Order by子句:对查询的结果进行排序 SQL的查询主要有简单查询、联接查询、嵌套查询、聚集(计算)查询等,1.简单查询(主要通过例子说明查询的使用) 【例4.16】查询课程表的所有信息(*的使用) SELECT

49、 * FROM 课程表 WHERE (学生表.学号=选课表.学号) ; AND (选课表.课程号=课程表.课程号) ; AND (选课表.成绩90) 【注意】 (1)当FROM后的多个关系中有同名字段时,须用前缀指明字段所属的表; (2)多表联接查询时要指明查询的联接条件。,In谓词的使用(表示包含的关系) 从选课表sc中查询选修了0001或0002课程的所有学生的成绩信息。 Select * From 选课表 Where 课称号 in (0001,0002) 【说明】In谓词的使用相当于or的用法 相当于Where 课称号=01 or 课称号=02 相反的操作:Where 课称号 not i

50、n (0001,0002),(1) BETWEENAND 表示在和之间 【例4.21】查询出成绩在8085范围内的学生姓名和成绩。 SELECT 姓名,成绩 FROM 学生表,选课表 ; WHERE (学生表.学号=选课表.学号) ; AND (选课表.成绩 BETWEEN 80 AND 85) 【说明】此条件等价于(成绩=80)and(成绩=85),但更简洁。 “不在之间”可用 NOT BETWEENAND。,4. 特殊操作符,(2) LIKE 【例4.22】查询出管理专业的学生信息。 SELECT * FROM 学生表 ; WHERE 专业 LIKE %管理 【说明】通配符% 表示0个或多

51、个字符,_ 表示1个字符。 (3)不等于“!=”可用否定运算符NOT表示 【例4.23】查询专业不是机械设计自动化和机电一体化的学生信息。 SELECT * FROM 学生表WHERE NOT (专业=机械设计自动化 OR 专业=机电一体化),SELECT * FROM 学生表WHERE 专业!=机械设计自动化 AND 专业!=机电一体化,如果没有指定查询结果的显示顺序,DBMS将按其最方便的顺序(通常是元组在表中的先后顺序)输出查询结果。 用户也可以用ORDER BY子句指定按照一个或多个属性列的升序(ASC)或降序(DESC)重新排列查询结果。如未指明排序方式,系统默认按升序排列。 【例4

52、.24】查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 SELECT * FROM 学生表 ORDER BY 专业, 出生日期 DESC 【例4.25】查询选修了003号课程的学生的学号、课程号和成绩,查询结果按分数的降序排列。 SELECT * FROM 选课表 WHERE 课程号=0003 ORDER BY 成绩 DESC,5. 记录排序,SELECT子句不仅可以是表中的属性列,也可以是表达式,即可以将查询出来的属性列经过一定的计算后列出结果。SQL语句可以直接对查询结果进行计算,有如下计算函数。 (1) COUNT:计数 (2) SUM:求和 (3) AVG

53、:计算平均值 (4) MAX:求最大值 (5) MIN:求最小值 【例4.26】查询全体学生的姓名、年龄并把列标题改为年龄,并按出生日期升序排序。 SELECT 姓名,YEAR(DATE()-YEAR(出生日期) AS 年龄 FROM 学生表 ORDER BY 出生日期,6.计算查询,7. 分组与计算查询 【例4.27】查询各个课程号与相应的选课人数、平均成绩和最高分,结果如表4.11所示。 SELECT 课程号, COUNT(学号) 选课人数, AVG(成绩) 平均成绩, ; MAX(成绩) 最高分 FROM 选课表 GROUP BY 课程号 8. 利用空值查询 判断是否为空(IS NULL

54、)及是否非空(IS NOT NULL) 【例4.28】找出没有选课的学生信息。 SELECT * FROM 选课表WHERE 成绩 IS NULL 【注】空值查询不能用“=NULL”,因为空值不是一个确定的值,不能用“=”运算符比较。,9. 别名与自联接查询 在联接操作中,经常需要使用关系名作前缀,有时这样比较麻烦。因此SQL允许在FROM短语中为关系名定义别名。别名并非必须的,但在关系的自联接操作中别名必不可少。 (1)为了简化关系名 【格式】 【例4.29】利用别名查询成绩90分的学生姓名、课程名及成绩 SELECT 姓名,课程名,成绩 FROM 学生表 S,课程表 C,选课表 G ; W

55、HERE (C.学号=G.学号); AND (G.课程号=C.课程号); AND (G.成绩90),(2)自联接查询 自联接:将同一关系与其自身进行联接称自联接。 【例4.30】根据课程表关系列出课程的先行课清单。 SELECT S.课程名, 的先行课是:,C.课程名 ; FROM 课程表 S,课程表 C ; WHERE S.先行课=C.课程号,10.内外层互相关联嵌套查询 【例4.31】列出选课表里每门课程的最高分并按课程号升序排序。 SELECT C.课程号,C.成绩 ; FROM 选课表 C ; WHERE C.成绩=( ; SELECT MAX(成绩) ; FROM 选课表 N ; W

56、HERE C.课程号 = N.课程号 ; )ORDER BY C.课程号,11. 超联接查询 超联接:首先保证一个表中满足条件的元组都在结果表中;然后将满足联接条件的元组与另一个表的元组进行联接,不满足联接条件的则将应来自另一表的属置为空值。 【格式】SELECT FROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE 【说明】 INNER JOIN普通联接,称内部联接。 LEFT JOIN 为左联接。 RIGHT JOIN为右联接。 FULL JOIN 以称为全联接。,【例4.32】内部联接:只有满足联接条件的记录才出现在查询结果中。 SELECT 学生表.学号,学

57、生表.姓名,成绩 FROM 学生表; INNER JOIN 选课表 ON 学生表.学号 = 选课表.学号 等价于: SELECT 学生表.学号,学生表.姓名,成绩 FROM 学生表; JOIN 选课表 ON 学生表.学号=选课表.学号 又等价于: SELECT 学生表.学号,学生表.姓名,成绩 FROM 学生表,选课表; WHERE 学生表.学号=选课表.学号,【例4.33】左联接:除满足是联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中,相对应的第二个表的记录部分为NULL。 SELECT 学生表.学号,学生表.姓名,成绩 FROM 学生表; LEFT JO

58、IN 选课表 ON 学生表.学号=选课表.学号 【例4.34】右联接:除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中,相对应的第一个表的记录部分为NULL。 SELECT 学生表.学号,学生表.姓名,成绩 FROM 学生表; RIGHT JOIN 选课表 ON 学生表.学号=选课表.学号,【例4.35】全联接:除满足条件的记录出现,两表中不满足联接条件的记录也出现在查询结果中。即两个表中的条件不管是否满足联接条件将都在目标表或查询结果中出现,不满足联接条件的记录对应部分为NULL。 SELECT 学生表.学号,学生表.姓名,成绩 FROM 学生表; F

59、ULL JOIN 选课表 ON 学生表.学号=选课表.学号 12.集合的合并运算(UNION) SQL支持集合的并运算,要求两个查询结果具有相同的字段和字段个数。 【例4.36】查询学生表中专业是“建筑工程技术”和“工程管理”的学生信息。 SELECT * FROM 学生表 WHERE 专业=建筑工程技术 UNION ; SELECT * FROM 学生表 WHERE 专业=工程管理,Not exist、 all、 any的使用 1)exists谓词:即检查子查询中是否存在满足条件的元组或不存在满足条件的元组。 例如:查询没有选修任何课程的学生信息 Select * from 学生表 where not exists ( ; select * from 选课表 where ; 学生表.学号=学号),补充内容,注意:exists不是运算符号,所以exists前后都不能有比较项或运算符,而且子查询中select后一般为*。,2)ALL和ANY的使用 当子查询的结果为多个值时,而又有比较运算符时,使用ALL或ANY谓词。 All:表示与子查询的结果中所有

温馨提示

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

评论

0/150

提交评论