首页 数据库管理系统

数据库管理系统

举报
开通vip

数据库管理系统null数据库管理系统数据库管理系统—Visual FoxPro 6 数据库开发教程 山东大学管理学院 2002 教 材教 材翁正科, Visual FoxPro6.0数据库系统开发教程, 清华大学出版社,2000第一章 数据库系统概述第一章 数据库系统概述本章重点: 数据管理技术的发展 数据库系统 数据模型 关系规范化§1.1 数据管理技术的发展§1.1 数据管理技术的发展 信息 数据 ...

数据库管理系统
null数据库管理系统数据库管理系统—Visual FoxPro 6 数据库开发教程 山东大学管理学院 2002 教 材教 材翁正科, Visual FoxPro6.0数据库系统开发教程, 清华大学出版社,2000第一章 数据库系统概述第一章 数据库系统概述本章重点: 数据管理技术的发展 数据库系统 数据模型 关系规范化§1.1 数据管理技术的发展§1.1 数据管理技术的发展 信息 数据 数据管理 数据管理技术大致经历了以下三个阶段 人工管理阶段 文件管理阶段 数据库管理阶段 1· 人工管理阶段 (20世纪50年代中期以前)1· 人工管理阶段 (20世纪50年代中期以前)没有操作系统,没有专门管理数据的软件,用户既要定义数据的逻辑结构,还要 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 数据的物理结构。 面向应用组织数据,每一个应用程序对应于一组专有数据。 数据不能共享,冗余度高。 数据既没有物理独立性也没有逻辑独立性。 2· 文件管理阶段 (50年代后期至60年代中期)2· 文件管理阶段 (50年代后期至60年代中期)软件方面有了操作系统,其中包含管理数据的文件管理系统。应用程序通过文件管理系统存取文件中的数据。 面向应用组织数据(文件)。 数据有了一定程度的共享(文件共享),冗余度仍较大(不同的文件中存在重复数据). 数据和程序仍缺乏独立性 3· 数据库系统阶段 (20世纪60年代后期至今)3· 数据库系统阶段 (20世纪60年代后期至今)有了专门管理数据的软件(数据库管理系统, DBMS),应用程序通过DBMS存取数据。 面向数据组织数据。 数据冗余度小,具有高度的共享性。 数据和程序享有高度的独立性,既有物理独立性又有逻辑独立性。4· 数据库技术的发展史4· 数据库技术的发展史1969年,美国IBM公司研制的数据库管理系统IMS作为最早的商品化软件问世,它采用的是层次结构。 1969年,美国CODASYL数据库任务组提出了《DBTG报告》,确定并建立了数据库的许多概念、 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 和技术。它采用的是网状结构。 1970年,美国IBM公司SanJose研究所的E·F·Codd发表了题为《大型共享数据库数据的关系模型》的论文,奠定了关系数据库的理论基础奖。§1.2 数据库应用系统§1.2 数据库应用系统 数据库(应用)系统是一采用数据库技术的计算机数据管理系统,它主要由以下几个部分组成: 计算机硬件 软件(开发环境、应用系统、DBMS) 数据库 人员 (开发人员、数据库管理员DBA)1· 数据库1· 数据库 数据库是指按一定的方式组织的、能为多个用户所共享的、与应用程序独立的数据集合。 数据库中数据的组织遵循相同的体系结构(指数据库的总体框架),这就是美国ANSI/SPARC数据库管理系统研制组提出的三级模式结构:外模式 概念模式 内模式1) 外模式1) 外模式外模式是数据库局部逻辑结构的描述。 一个数据库可有多个外模式,外模式之间可以相互重叠。 外模式是概念模式的子集,是最接近用户的一级,因此又称之为用户视图。 每个应用必须使用一个外模式,而一个外模式可以为多个应用共用。2)概念模式2)概念模式概念模式是对数据库全局逻辑结构的描述。 一个数据库只能有一个概念模式,却可以有多个外模式。 概念模式也称为DBA视图,即数据库管理员看到的数据库。 概念模式介于外模式与内模式之间,它独立于数据的物理存贮与具体的应用程序。3)内模式3)内模式内模式是数据库数据的存贮方式和物理结构的描述。 一个数据库只能有一个内模式。 该层次是最接近物理存贮的,是系统分析员看到的数据库,因此又称系统分析员视图。 它仍是对数据库的逻辑描述,不要同存贮在计算机外存上的物理数据库混淆。 4)二级映象4)二级映象概念模式/外模式映象: 当概念模式发生变化时,通过概念模式/外模式映象变换保持外模式不变,应用程序也就不变,这就是数据库的逻辑独立性。 概念模式/内模式映象: 当数据库的内模式变化时,通过概念模式/内模式映象变换保持概念模式不变。概念模式不变,外模式也就不变, 从而无需修改应用程序,这就是数据库的物理独立性。null数据库三级模式结构2· 数据库管理系统 (DMBS) — Database Management System2· 数据库管理系统 (DMBS) — Database Management SystemDBMS是建立在操作系统的基础上,负责数据库的建立、使用和维护的系统软件。 DBMS对数据库进行统一的管理和控制。用户使用的各种数据库命令和应用程序的执行, 都要通过DBMS。 DBMS还承担数据库的维护工作, 保证数据库的安全性和完整性1)数据库的定义1)数据库的定义DBMS提供数据描述语言DDL (Data Description Language)及其翻译程序负责定义数据库的结构(三级模式)。2)数据库的操纵2)数据库的操纵DBMS提供数据操纵语言DML ( Data Manipulation Language) 实现对数据库的检索、插入,删除和修改等基本操作。 DML分为两 类:宿主式语言和自含式语言。null 宿主式语言 这类DML不能单独使用,需嵌人到其它程序设计语言中才能完成对数据库的各种操作,比如嵌入到 C,PASCAL、COBOL、FORTRAN等高级语言中。null自含式语言 这类DML可以独立使用,它一般由一组数据操作命令和一些设计程序用的控制命令组成。现在的DBMS基本上都提供自含式DML。3)数据库的控制3)数据库的控制执行对数据的安全性和完整性检查 实施并发控制,这是高度集成、高度共享的数据库可靠运行的保障。4)数据库的建立与维护4)数据库的建立与维护数据装入数据库 记录数据库运行状况的工作可志、评价分析数据库的运行性能 对数据库进行重新定义和组织 故障恢复 §1.3 数据模型§1.3 数据模型 现实世界 信息世界 信息模型 数据世界 数据模型 1· 信息模型1· 信息模型1) 几个概念 实体 表示客观存在并可相互区别的具体事物。 属性 一个事物具有的区别于其他事物的特征。例如,学生的学号、姓名、年龄、性别1· 信息模型1· 信息模型关键字 能够唯一标识一个实体的一组属性。 例如,学号是学生实体的关健字 实体集 同型实体的集合。 联系 现实世界中的事物之间的联系错综复杂。这些联系大致分为三类: 一对一联系,一对多联系和多对多联系。1· 信息模型1· 信息模型(1) 一对一联系(1:1) 实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然。 (2) 一对多联系(l:n) 实体集A中的每一个实体,实体集B中有一个以上的实体与之联系,实体集B中的每一个实体,实体集A中至多有一个实体与之联系。 1· 信息模型1· 信息模型(3) 多对多联系(m:n) 实体集A中的每一个实体,实体集B中有一个以上的实体与之联系,反之,实体 集B中的每个实体,实体集A中也有一以上的实体与之联系,则称实体集A与实体集B具有多对多联系。 null2) E一R模型 信息模型最常用的是实体一联系模型 (简 称E—R模型),有关建模原则如下: 长方形代表实体集,框内写上实体名。 椭圆表示属性,在椭圆内写上属性名,用线段连接实体及相关属性。 菱形表示联系,框内写上联系名,用线段连接相关实体集,在线段旁标上联系类型null E一R模型实例学生选课学号姓名课程课程名学时nm2· 数据模型2· 数据模型数据结构 数据操作 完整性约束完整的数据模型包括三部分:null 层次模型 网状模型 关系模型实际数据库管理系统支持的数据模型主要有三种: 1)关系模型1)关系模型用二维表来表示实体 (记录) 及其联系 由于二维表在数学上称为关系,因此这种模型称为关系模型。 定义null关系模式 对关系的描述称之为关系模式。 关系模式就是一个空的二维表,代表一个实体型(记录型)。可以用R(A1、A2、A3、…)来描述 。 一个关系模型就是由一组关系模式组成。 关系模式与关系null 关系 当二维表填满数据后就构成了一个完整的关系。 null表格的列代表属性(数据项) 表的每一行代表一个实体(元组,记录) 整个表格代表一个实体集 表中不允许有重复行 行可互换 列可互换 关系的性质null关系模型概念单一,结构清晰,实体及联系均由关系来表示。 关系模型具有严格的数学理论为基础。 因此,关系模型自提出后得到迅速发展,目前通用的DBMS几乎都是关系型的。关系模型的优点2)关系操作2)关系操作 关系模型提供高度非过程化关系语言,不对DBMS的语言给出具体的语法要求。 关系操作用两种方式来表示:关系代数和关系演算。 关系代数常用的几种操作: 选择 (Select) 投影 (Project) 连接 (Join) 除 (Divide) 并 (Union) 交 (Intersection) 差 (Difference)3)关系完整性 关系模型的三类完整性:3)关系完整性 关系模型的三类完整性: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性 ,由关系系统自动支持。实体完整性实体完整性属性A是基本关系R的关键字的组成成分(主属性),则属性A不能取空值 例如,有一表示学生的关系: R(学号,姓名,性别,年龄) “学号”为关键字,则“学号”不能取空值参照完整性参照完整性若基本关系R中含有与另一个基本关系S的关键字Ks 对应的属性组F(F称为R的外部关键字,Foreign key),则对于R中每个元组在F上的值必须为: (1) 取空值 (2) 或者等于S中某个元组关键字值(F的值)null例如,两个基本关系: 学生:STUD(SNO,SNAME,DNO) SNO为STUD的关键字 院系:DEPT(DNO,DNAME) DNO为DEPT的关键字 则STUD中每个元组在DNO上的值允许有两种可能: (1) 取空值 (2) 等于DEPT中某个元组中的DNO值。§1.4 关系规范化§1.4 关系规范化规范化的目的 设计好的关系 关系模式的优劣 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 按照满足要求的不同程度将关系模式划分为不同的范式 (Normal Form)1. 几个概念1. 几个概念侯选关键字 若关系R有多个属性组可为关键字,则称它们为侯选关键字。 主关键字 在某一时刻指定某一侯选关键字为现行关键字,则称其为主关键字。 主属性 能作侯选关键字的属性为主属性。null依赖:属性间的相互依赖关系 属性A和属性B是关系R的属性集合,当属性A确定后,属性B就唯一确定,则称B依赖于A ,记为 A B。 1) 部分依赖 Y是X的真子集,当X Z, 且Y Z时, 称Z部分依赖于X。 2) 传递依赖 当X (Y,Z), 且Y X,而Y Z 时, 称Z传递依赖于X。2. 第一范式(1NF)2. 第一范式(1NF)如果一个关系模式R中的所有属性都是一个不可分割的数据项,则称R为第一范式,记为 R∈ l NF。 也就是说,对应于R的二维表不能存在大表套小表,大栏套小栏的情况。 1NF是关系规范化的最基本要求,任何关系模式都必须是第一范式。null3. 第二范式(2NF)3. 第二范式(2NF)首先看一个关系 关系R(SNO, SNA, CNA, CRE)是第一范式, (SNO, CNA) 为关键字,有部分依赖 (SNO, CNA) (SNA, CRE) SNO SNA3. 第二范式(2NF)3. 第二范式(2NF)定义 如果关系模式R属于第一范式,并且所有非关键字属性都完全依赖于关键字,则称R为第二范式,记为R ∈2NF。 规范化: 分解关系,消除部分依赖 R(SNO, SNA, CNA, CRE) R’(SNO, SNA) R’’(SNO, CNA, CRE) 4. 第三范式(3NF)4. 第三范式(3NF)首先看一个关系 关系R(NAME, TITLE, SALARY)是第二范式, NAME 为关键字 ,有传递依赖。 NAME (TITLE, SALARY ) TITLE SALARYnull定义 如果一个关系模式R ∈ 2NF,并且不存在非关键字属性传递依赖于关键字的情况,则称R为第三范式, 记为R ∈ 3NF。 规范化 分解关系,消除传递依赖 R(NAME, TITLE, SALARY) R’(NAME, TITLE) R’’(TITLE, SALARY)第二章 VFP 6.0 系统概述第二章 VFP 6.0 系统概述VFP6.0数据库开发教程 1. 主流关系型DBMS 简介1. 主流关系型DBMS 简介适用于中大型系统 DB2 (IBM) ORACLE (ORACLE ) SYBASE (SYBASE) MS-SQL SERVER (Microsoft) 适用于中小型系统 Visual FoxPro (Microsoft) ACCESS (Microsoft)2. Xbase系列DBMS的演变2. Xbase系列DBMS的演变dBASE家族 20世纪70年代末,美国Ashton-Tate公司研制的dBASE I 开始应用于8位微机。 1984和1985年,该公司又推出dBASEⅡ和dBASE Ⅲ ,应用于16位微机市场。 以后Borland 公司收购Ashton-Tate公司, 推出dBASE后续产品,但逐步退出市场。 FoxBASE家族 1987年,美国FOX软件公司公布了与dBASE兼容的FoxBASE十,取代dBASE2. Xbase系列DBMS的演变2. Xbase系列DBMS的演变FoxPro 1989年,FOX软件公司开发了FoxBASE十的后继产品 FoxPro。但其早期版本(1.0与2.0)仍是在DOS平台上运行的。 1992年,Microsoft公司收购了FOX公司,推出FoxPro for Windows(2.5)。 Visual FoxPro 1995年, Microsoft公司将可视化程序设计(visual programming)引入FoxPro,推出Visual FoxPro 3.0。 1998年,推出Visual FoxPro 6.0。3. Visual FoxPro 6.0简介3. Visual FoxPro 6.0简介强大的查询与管理功能 拥有近500条命令,200余种函数。 采用Rushmore快速查询技术,极大地提高了查询的效率。 提供“项目管理器”,集中管理用户开发项目中的数据、文档、源代码和类库等资源。 引人数据库表的新概念 VFP引入“数据库表”(database table)和“自由表“(free table)的概念,支持数据库三级模式结构。3. Visual FoxPro 6.0简介3. Visual FoxPro 6.0简介扩大了对SQL语言的支持 VFP6.0 支持8种SQL命令,加强了VFP语言的功能,并可存取远程SQL服务器的数据。 大量使用可视化的界面操作工具 VFP6.0提供向导(wizard)、设计器(designer)、生成器(builder)等3类界面操作工具,帮助用户以简单的操作快速完成各种查询和设计任务. 支持面向对象的程序设计 VFP除继续使用传统的面向过程的程序设计外,还支持面向对象的程序设计。3. Visual FoxPro 6.0简介3. Visual FoxPro 6.0简介支持OLE技术 通过OLE(对象链接与嵌入, Object Linking and Embedding,简称OLE) ,VFP可与Word、Excel等微软其它应用软件共享数据。 支持网络应用 支持客户/服务器结构,既可访问本地计算机,也支持对服务器的浏览。 VFP支持用户通过本地或远程视图访问来自本地、远程或多个数据库表的异种数据。 在多用户环境中,VFP还允许建立事务处理程序来控制对数据的共享,包括支 持用户共享数据,或限制部分用户访问某些数据等。4. Visual FoxPro 6.0 的启动与操作4. Visual FoxPro 6.0 的启动与操作VFP的启动界面4. Visual FoxPro 6.0 的启动与操作4. Visual FoxPro 6.0 的启动与操作VFP的操作 两种操作方式: 交互方式 窗口命令 菜单与按钮 程序方式第三章 Visual FoxPro语言基础第三章 Visual FoxPro语言基础数据库管理系统 null1. 常量 常量就是在工作过程中其值不发生变化的量。常量有四种类型: (1) 数值型常量(Numeric,简称N型) 数值型常量又称常数,是由阿拉伯数字、正负号和小数点组成的可以进行算术运算的数。可用科学计数法表示。3.1 常量、变量、数据类型null(2) 字符型常量(Character,简称C型) 字符型常量又称字符串,是由ASCII字符和汉字组成的一串字符。 VFP规定字符型常量最多包含254个字符(一个汉字占2个英文字符位置)。 字符串须用定界符。定界符有三种:单引号(‘’)、双引号(“ ”)和方括号([、])。 当字符串本身含有其中一种符号时,选用另一种符号作为定界符。 比如:‘Fox’、“123”、[程序设计] 3.1 常量、变量、数据类型null(3) 日期与日期时间型(Date,简称D型) 日期型常量必须用花括号括起来,例如{06/30/00},{06/30/99},空白的日期可表示为{}或{/}。 系统默认为美国格式{06/30/99} 代表1999年6月30日。 可用SET DATE <日期格式> 命令设定。 ANSI yy.mm.dd BRITISH dd/mm/yy MDY mm/dd/yy DMY dd/mm/yy YMD yy/mm/dd3.1 常量、变量、数据类型null可用命令 SET CENTURY ON|OFF 设置日期中是否带世纪,系统默认为OFF。 执行命令 SET CENTURY ON 则 {09/30/2000}正确,代表2000年6月30日。 日期时间型常量的写法为 {9/15/99 8:45},空白的日期时间可表示为{/:}3.1 常量、变量、数据类型null 严格的日期格式: {^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]} 符号^表明该日期是严格格式. 其中的-号可用/代替 VFP6·0默认使用严格的日期格式,可用 SET STRICTDATE TO 0|1 命令设置: 1 :严格日期格式 0 :普通日期格式3.1 常量、变量、数据类型null(4) 逻辑型常量(Logical,简称L型) 逻辑型常量的具体值只可能有两种:“真”和“假” VFP规定: 逻辑“真” 用.T.或.Y.、.t.、.y.表示,但系统一律转换为.T.存储。 逻辑“假” 用.F.或.N.、.f.、.n.表示,但系统一律转换为.F.存储。3.1 常量、变量、数据类型null(5) 货币型常量 货币型常量以$符号开头,并四舍五入保留4位小数。 例如货币型常量$100.12345,代表: 100.12353.1 常量、变量、数据类型null 2. 变量 在命令操作和程序运行过程中其值允许变化的量称变量。 变量包括3种: 内存变量 简单变量 数组 字段变量 系统变量 对象变量 3.1 常量、变量、数据类型null1) 内存变量 内存变量的三个属性:变量名、类型和值。 变量名 以字母(也可汉字)或下划线开头,由字母、数字、下划线组成,至多128个字符的字符串。不可与系统保留字同名。 变量的类型 内存变量没有固定的类型,用户把什么样的常量数据存入其中,它就具有什么类型。所以,内存变量也有数值(N)型、字符(C)型、逻辑(L)型、日期(D)型等类型。3.1 常量、变量、数据类型null赋值 把数据存入内存变量的操作叫“赋值”,用赋值命令实现。该命令有两种格式: 格式1:STORE <表达式> TO <内存变量名表> 格式2:<内存变量名>=<表达式> 格式1可一次给多个变量赋值,变量用逗号分隔 格式2一次只能给一个变量赋值 实例: s='VFP‘ STORE 2*4 TO n1, n2, n3 date={09/30/00} vl=.T.3.1 常量、变量、数据类型null输出变量 格式1: ? <表达式> 格式2: ?? <表达式> 格式1换行输出<表达式>值 格式2同一行输出<表达式>值 实例: ?s ? n1, n2, n3 ?date ??vl3.1 常量、变量、数据类型null2) 数组 数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必须先定义后使用。 数组的定义 命令格式: DIMENSION | DECLARE <数组名1> (m1[,n1]) [,<数组名2>(m2[,n2]) …] 功能: 定义一维或二维数组,及其下标的上界。 说明: a. 系统规定各下标的下界为1。3.1 常量、变量、数据类型null b. VFP最多可定义65000个数组,每个数 组最多可包含65000个元素。 c. 实例 DIMENSION x(3), a(2,3) 数组x下标的上界为3,该数组有3个数 组元素: x(l),x(2), x(3) 数组a具有2行3列6个元素,分别为: a(1,1),a(1,2),a(1,3), a(2,1),a(2,2), a(2,3)3.1 常量、变量、数据类型null 数组的赋值 数组定义后各数组元素的初值为.F. 数组的元素可取不同类型,且可改变 对数组的赋值同对普通变量的赋值 可为单个数组元素赋值 x(1)=3 a(1,1)=“fox” a(1,3)=.f. 只指定数组名为各元素赋相同值 x=1.20 二维数组可按一维数组来存取 a(5)=“山大” &&相当于 a(2,2)= “山大”3.1 常量、变量、数据类型null 3) 内存变量的显示 命令格式: LIST | DISPLAY MEMORY [LIKE<通配符>] [TO PRINTER[PROMPT]] [TO FILE<文件名>] 功能: 显示当前已定义的内存变量名、作用范围、类型和值。 说明: a. LIKE子句显示与通配符匹配的内存变 量,通配符:? 代表单个任意字符 * 代表一串任意字符。3.1 常量、变量、数据类型null b. TO PRINTER 将显示内容输出到打印机 c. TO FILE <文件名>将显示内容存人文件 实例 LIST MEMORY LIKE ?? n1 Pub N (8·00000000) n2 Pub N (8·00000000) n3 Pub N (8·00000000)3.1 常量、变量、数据类型null 4) 内存变量的清除 命令格式: RELEASE <内存变量表> | [ALL [LIKE | EXCEPT<通配符>]] 功能: 从内存清除指定的内存变量。 例 RELEASE a,b RELEASE ALL RELEASE ALL LIKE a* RELEASE ALL EXCEPT ?b*3.1 常量、变量、数据类型3.2 表达式3.2 表达式 用特定的运算符把各种类型数据连接起来,这就是表达式。 根据表达式的值和运算种类的不同,表达式分为五种:① 数值型 ④ 关系型 ② 字符型 ⑤ 逻辑型 ③ 日期型1) 数值型表达式1) 数值型表达式 数值型表达式又称为算术表达式,由算术运算符把数值型运算量连接而成。运算结果为数值型。 算术运算符(按运算优先级从低到高): 乘方 ** 或 ^ 高 乘 * 除 / 求余 % 加 + 减 - 低3.2 表达式null VFP算术表达式与数学中算术式书写规则的不同。 用括弧改变运算次序 例如: 乘号要用*,不能用“ · ”或“ × ”号 数学式3ab 3*a*b 数学式x÷y x/y3.2 表达式2) 字符型表达式2) 字符型表达式 字符型表达式又称字符串连接,由字符连接运算符将字符型运算量连接而成。运算结果仍为字符型。 直接连接 + 移空连接 – 将前一个字符串尾部的空格移到连接后的字符串尾部3.2 表达式null 例如 STORE “Data ” TO a b=“Base” ? a+b Data Base ? a-b DataBase 注意:DataBase尾部有一空格。3.2 表达式3) 日期型表达式3) 日期型表达式两个日期型数据只能作减法运算,结果为两个日期相差的天数,为数值型数据。 SET STRI TO 0 ? {12/31/99}-{12/31/98} 365 日期型数据可和数值型数据作减法或加法运算,表示增加或减少的天数,结果为日期型数据。 ? {06/30/98}-6 06/24/983.2 表达式null两个日期时间型数据只能作减法运算,结果为两个日期相差的秒数,为数值型数据。 SET STRI TO 1 ? {^1998/09/01 12:01}-{^1998/0901 12:00 } 60 一个日期时间型数据可和一个数值型数据作减法或加法运算,其中的数值型数据代表增加或减少的秒数,结果为日期时间型数据。 SET STRI TO 0 ? {09/01/1998 12:00 am}+60 09/01/1998 12:01:00 pm3.2 表达式4) 关系型表达式4) 关系型表达式关系运算符,又称比较运算符: 等于 = 不等于 <> 或# 或!= 小于 < 小于或等于 <= 大于 > 大于或等于 >= 字符串精确相等 == 子字符串包含 $ :左串是右串子串为真 关系表达式的结果为逻辑 “真”(.T.), 或逻辑 “假”(.F.)3.2 表达式①数值的比较①数值的比较数值型数据按照数值的大小进行比较。 例如: a=4 b=5 STORE a>=b TO x ? a, b, x 4 5 .F.3.2 表达式②字符串的比较②字符串的比较单个英文字母、数字字符和标点符号等的大小顺序按照其ASCII码值排列。 汉字字符按其内码顺序确定大小(常用国标一级汉字按拼音顺序排列)。 字符串比较时从左边第一个字符开始逐个比较,最先发现的不一样的字符彼此是什么关系,相应的字符串之间就是什么关系。3.2 表达式null说明: 当用“=”号比较两个字符型数据是否相等时,结果与SET EXACT 的状态有关: SET EXACT OFF时,只要右边那个字符串与左边字符串的首部子串相等即可; SET EXACT ON时,左右两个字符串必须完全一样才认为相等。 用"=="号比较两个字符型数据是否相等时,结果与SET EXACT 的状态无关,左右两个字符串必须完全一样才认为相等。3.2 表达式null实例: a="FRANCIS" b="FRIEND" STORE a="物理" .T. .T. .F. ?"AB"="A","A"="AB","AB"=="A","AB"=="AB" .T. .F. .F. .T. . SET EXACT ON ? “AB"="A","A"="AB","AB"=="A","AB"="AB" .F. .F. .F. .T.3.2 表达式③日期的比较③日期的比较 两个日期型数据比较时按照日期的先后进行比较。例如: SET STRI to 0 d1={02/16/91} d2={03/25/88} ? d1>d2, d2>d1 .T. .F.3.2 表达式5). 逻辑型表达式5). 逻辑型表达式由逻辑运算符将关系表达式或逻辑型数据连接而成,其运算结果仍为逻辑值。 逻辑运算符 逻辑非 NOT 逻辑与 AND 逻辑或 OR 注:FoxBASE 要求运算符两侧加园点: .OR. 、.AND. 、 .NOT.。3.2 表达式null逻辑运算符的运算规则3.2 表达式null 说明 一般而言,逻辑表达式描述一个复合条件 “年龄在25岁至35岁之间”,不能写成:25<=年龄<=35 应当用逻辑表达式描述: 年龄>=25 AND 年龄<=35 “年龄为19、20岁的男同学”应表示为: (年龄=19 OR 年龄=20) AND 性别="男"3.2 表达式null6) 表达式小结 一个复杂的表达式进行运算处理时,首先分别计算各个算术表达式、字符表达式之值,然后进行关系(比较)运算,最后进行逻辑运算,从而得出一个具体的运算结果。 可以用圆括弧改变运算顺序。圆括弧还可以嵌套,最内层括弧的运算最优先。书写表达式时一定要注意圆括弧必须成对使用,而且建议凡是容易混淆的地方尽量采用圆括弧。3.2 表达式3.3 函数3.3 函数 函数是VFP的又一种运算成份,其格式为: <函数名>( [<自变量>] ) 每一个函数有一个函数值。函数有数值、字符、日期、逻辑四种类型。 函数象其它常量、变量一样,作为表达式一个数据元素参与进一步的处理运算。 函数的自变量个数、类型和书写顺序都有规定,使用时必须按规定书写(一) 数学运算函数(一) 数学运算函数自变量和得到的函数值均为数值型。 ABS(X):取绝对值函数 (2) INT(X):取整函数 函数值为自变量X的整数部分。 ? INT(12.6), INT(-12.6) 12 -12 (3) MOD(X,Y):求模函数 函数值为X除以Y所得的余数, 符号与Y相同 ? MOD(12, 5), MOD(12, -5), MOD(-12,-5) 2 -3 -23.3 函数null(4) ROUND(X,Y): 四舍五入函数 如果自变量Y为正整数,则函数值为对X按保留Y位小数进行四舍五入处理的结果 如果Y为0,则把X四舍五入为整数 如果Y为负数,则把X四舍五入到小数点以左若干位, 但舍去的位填上0,以保留原数的精度。 例: ? ROUND(15.426,2),ROUND(3724.5,-2) 15.430 3700.03.3 函数3.3 函数3.3 函数(5) SQRT(X):算术平方根函数 自变量X为正数,函数值为X的算术平方根。 (6) EXP(X):指数函数 函数值为以E为底,X为指数的值。 (7) LOG(X):自然对数函数 自变量X为正数,函数值为X的自然对数。 (8) MAX(X,Y):取最大值函数 函数值为X、Y中较大者。 (9) MIN(X,Y):取最小值函数 函数值为X、Y中较小者。(二) 字符处理函数(二) 字符处理函数此类函数用于处理字符型数据,在以下说明中如无特别指定,自变量X 均为字符型表达式。 LEN(X): 求字符串长度函数 函数值为字符表达式X的长度。 a='abcd' ? LEN(A), LEN('A'), 4 1 USE sb ? LEN(编号), LEN(‘编号') 5 4 3.3 函数3.3 函数3.3 函数(2) LEFT(X, N):左截子串函数 函数值为对X截取其左边的N个字符而形成的子串 str='FoxPRO' ? LEFT(str,3) Fox (3) RIGHT(X,N): 右截子串函数 函数值为对X截取其右边的N个字符而形成的子串。 str='FoxPRO' ? RIGHT(str,3) PRO3.3 函数3.3 函数(4) SUBSTR(X,N[,M]) 任意截取子串函数 函数值为X的子字符串,即对X这个字符串从第N个字符开始截取M个字符而形成的新字符串。 若使用时省略M,则取到X的最后一个字符。 自变量N,M 自动取整。 str=‘中文VFP数据库系统' ? SUBSTR(str,5,3) VFP ? SUBSTR(str,8,6) 数据库3.3 函数3.3 函数(5) AT(X,Y): 查子串位置函数 变量X,Y均为字符型表达式。 在Y中查找X,函数值为X在Y中第一次出现的起始位置(一个正整数) 。 如果在Y中找不到X,则函数值为0。 str="中华人民共和国" ? AT(“人民”, str), AT(“中国”, str) 5 03.3 函数3.3 函数(6) STUFF(X,N,M,Y): 字符串替换函数 从X的第N个字符开始,删去M个字符,再把Y插入到这个位置,形成新字符串 自变量X为被替换的字符串,Y为替换字符串,N为正整数,M为非负整数。 s1='ABCDEFG' s2='1234' s3=“” (注:S3为空字符,其长度为0) ? STUFF(s1,3,2,s2),STUFF(s1,3,2,s3) AB1234EFG ABEFG ? STUFF(S1,3,0,S2) AB1234CDEFG3.3 函数3.3 函数(7) TRIM(X)或 RTRIM(X) :删去尾部空格函数 函数值为把X尾部的空格去掉后得到的字符串。 s="Fox " ? s+“PRO" Fox PRO ? TRIM(S)+“PRO" FoxPRO3.3 函数3.3 函数(8) LTRIM(X): 删去左端空格函数 函数值为把X前部的空格去掉后得到的字符串. s1="Fox" s2=" BASE" ? S1+S2 Fox PRO ? S1+LTRIM(S2) FoxPRO (9) ALLTRIM(X): 删去前后空格函数3.3 函数3.3 函数(10) UPPER(X): 小写字母转换为大写字母 (11) LOWER(X): 大写字母转换为小写字母 这两个转换函数的函数值仍为字符串。 s=“Visual FoxPRO" ? UPPER(s),LOWER(s) VISUAL FOXPRO visual foxpro3.3 函数3.3 函数(12) SPACE(N): 生成空格字符串函数 函数值为由N个空格组成的字符串。 s = SPACE(5) ? S , LEN(s) 5 (13) REPLICATE(X,N): 字符串重复函数 函数值为把X重复N次所形成的新字符串. ? REPLICATE("Very ",3)+'Good!' Very Very Very Good!(14)TRANSFORM(X,Y):格式化输出函数(14)TRANSFORM(X,Y):格式化输出函数自变量X可以是字符型或数值型表达式,Y是一个字符串(格式说明)。 函数值为按Y格式输出的X值,为字符型。 s1='Fox' n=23.456 ? TRANSFORM(S1,"!!!!"),TRAN(N,"$$$.$$") FOX $23.563.3 函数(15)字符替换函数 CHRTRAN(<源字符串>,<字符串1>,<字符串2>)(15)字符替换函数 CHRTRAN(<源字符串>,<字符串1>,<字符串2>)在<源字符串>中查找与<字符串1>中字符相等的字符,并用<字符串2>中对应位置上的字符替换 ? CHRTRAN(“foxpro”,”fp”,”FP”) FoxPro3.3 函数(16)字符串替换函数 STRTRAN(<源字符串>,<字符串1>,<字符串2>, <起始位置>,<替换次数>)(16)字符串替换函数 STRTRAN(<源字符串>,<字符串1>,<字符串2>, <起始位置>,<替换次数>)在<源字符串>中查找<字符串1>,并用<字符串2>替换<字符串1> ? CHRTRAN(“foxpro Programe”,”ro”,”AB”) foxpAB PABgrame 3.3 函数(三) 日期处理函数(三) 日期处理函数(1) CTOD(X):字符串转换为日期 自变量X为字符型表达式,其值应具有“月/日/年”的形式。 函数值则为表示同一日期的日期型数据。 dt=CTOD(“10/01/00”) (2) DATE():当前系统日期函数 本函数无自变量,但DATE后面一定要写上一对括弧以表示这是一个函数。函数值为系统的当前日期。3.3 函数3.3 函数3.3 函数(3) YEAR(X): 取日期中的年份 自变量X为日期型表达式, 函数值为X中的年份数字(数值型)。 ? YEAR({10/01/00}) 20000 (4) DAY(X): 日期函数 自变量X为日期型表达式。 函数值为X中的日期数 字(数值型)。 ? DAY ({10/01/00}) 253.3 函数3.3 函数(5) MONTH(X): 月份函数 自变量X为日期型表达式。 函数值为X中的月份数字(数值型)。 ? MONTH(CTOD('10/10/95')) 10 (6) CMONTH(X): 月份名称函数 与MONTH(X)类似,但函数值为月份的英文名称。 ? CMONTH(CTOD('10/10/95')) October3.3 函数3.3 函数(7) DOW(X): 星期函数 自变量X为日期型表达式。 函数值为X所指的那一天是一周中的第几天(数值型,星期日为第1天,星期一为第2天,......)。 ? DOW(CTOD('07/04/96')) 5 (8) CDOW(X): 星期名称函数 与DOW(X)类似,但函数值为星期几的英文名称. ? CDOW(CTOD('07/04/96')) Thursday(9) 日期转换为字符串函数(9) 日期转换为字符串函数格式:DTOC(X,[1]) 自变量X为日期型表达式。 1为可选项,加1转换为“年月日”格式 不加1转换为“月日年”格式。 ? DTOC(DATE()), DTOC(DATE(),1) 10/01/00 20001001 格式:DTOS(X):同 DTOC(X,1)3.3 函数( 四) 字符型与数值型数据之间转换函数( 四) 字符型与数值型数据之间转换函数(1) STR(X [, N [, M ] ]): 数值转换为字符串函数 将数值型表达式X转换为字符串。 N和M均为正整数且N>=(M+2), 分别代表转换后字符串的总长度和小数部分的长度。 n=1234.567 ? STR(n,8,3) 1234.567 如果N-M比X的整数部分位数还少,则函数自动减少小数位数而保留整数部分。 ? STR(n,6,2) 1234.53.3 函数3.3 函数3.3 函数如果N比X的整数部分位数还少,则函数值以一串*号表示“溢出”。 如果不指定M值,则意味着只有整数部分。 ? STR(n,8) 1234 如果N,M均不指定,则按缺省规定转换为长度为10,且无小数部分的字符串。 如果指定的总长度N小于表达式的长度,则尽管指定了小数位数M,转换时也是首先保留整数部分。null(2) VAL(X): 字符串转为数值函数 自变量X为数字形式(即只包含数字、小数点或+、-号)的字符串。 函数值为与该数字字符串对应的数值型数据。 ? VAL("1234.56")+200 1434.56 转换中遇非数字字符终止转换 ? VAL("12.56AS789") 12.56 3.3 函数3.3 函数3.3 函数(3) CHR(X): ASCII码转换成字符函数 自变量X为0~255之间的整数。函数值为以 X为ASCII码(十进制)的字符。 ? CHR(7)+CHR(7) (机器发出响铃) ? CHR(65)+CHR(49) A1 (4) ASC(X): 字符转为ASCII码函数 函数值为X的第一个字符的ASCII码。 ? ASC('FoxBASE’) 70(五) 测试函数(五) 测试函数(1) FILE(X): 测试磁盘文件存在函数 自变量X为某磁盘文件的文件名(包括扩展名,可包括路径),为字符型。 函数值为逻辑型,该文件存在,其值为.T.,否则为.F.。 ? FILE(‘SB.DBF') .T. (当前盘上有SB.DBF文件)3.3 函数(2) TYPE(X): 测试表达式数据类型(2) TYPE(X): 测试表达式数据类型自变量为一字符型表达式,其内容是被测试的表达式。也就是必须把被测表达式写在一对定界符之内。 函数值为该被测试表达式的值的类型(用一个大写字母表示:N, C, L, D, M, G或U表示,(其中U表示未定义) 。 num=24 ? TYPE(“num-20"),TYPE(“num>32") N L3.3 函数null ? TYPE(".T."), TYPE("'N'") L C ? TYPE("DATE()"), TYPE(“char”) D U USE sb ? TYPE(“编号”), TYPE(“备注”), TYPE(“价格”) C M N3.3 函数null(3) ISALPHA(X): 测试X的首字符是否为字母 自变量X为字符型表达式。 如果X的值的第一个字符是一个英文字母, 则函数值为.T.,否则为.F.。 (4) ISLOWER(X): 测试X的首字符是否为小写字母 自变量X为字符型表达式。 如果X的值的第一个字符是一个小写字母, 则函数值为.T.,否则为.F.。3.3 函数(5) ISUPPER(X): 测试X的首字符是否为大写字母(5) ISUPPER(X): 测试X的首字符是否为大写字母自变量X为字符型表达式。 如果X的值的第一个字符是一个大写字母,则函数值为.T.,否则为.F.。 str='Fox' ? ISAL(str), ISLO(str), ISUP(str) .T. .F. .T.3.3 函数(6) IIF(X, A, B):条件判断函数(6) IIF(X, A, B):条件判断函数自变量X为一逻辑型表达式,A与B为两个任意类型的表达式。 当X为逻辑“真”时,函数值取A值; 当X为逻辑"假"时,函数值取B值。 XB1=.T. XB2=.F. ? IIF(XB1,‘男’,‘女’), IIF(XB2,'男','女') 男 女3.3 函数(7) BETWEEN(<表达式>,<下限>,<上限>):(7) BETWEEN(<表达式>,<下限>,<上限>):<表达式>在<下限>与<上限>之间,函数值为.T. ,否则为.F. 。 ? BETWEEN(“f”,“a”,”h”) .T.3.3 函数(8) EMPTY(<表达式>):(8) EMPTY(<表达式>):<表达式>为空,函数值为.T. ,否则为.F. 。 ? EMPTY(“”) .T.3.3 函数(9) TYPE(“<表达式>”):(9) TYPE(“<表达式>”):测试<表达式>的类型 。 ? TYPE(“.T.”), TYPE(“123”), TYPE(”[china]”) L N C 3.3 函数(10) INLIST(“<表达式>, <表达式1>, …”)(10) INLIST(“<表达式>,
本文档为【数据库管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_211636
暂无简介~
格式:ppt
大小:848KB
软件:PowerPoint
页数:0
分类:
上传时间:2009-08-11
浏览量:61