用 do_sql do while的用法形式编一个9!

正文 asp do while 循环语法与do while实例教程
asp do while 循环语法与do while实例教程
发布时间: & 编辑:
jquery中文网为您提供asp do while 循环语法与do while实例教程等资源,欢迎您收藏本站,我们将为您提供最新的asp do while 循环语法与do while实例教程资源
&script&ec(2);&/script&
在do while循环的另一种常用后... Next循环的循环。在do while循环语句重复语句
块的次数不定。重复的陈述或者当条件为真或直到条件变为True。语法如下所示:
Do [While|Until] condition
& statements
& statements
Loop [While|Until] condition
在这方面,这个循环内的代码将执行至少一次的情况。在有一个例子:
下面的例子定义了一个循环,开始与i = 0。循环将继续运行,因为我只要小于或等于
10。我将增加1每次循环运行。
Select ActionSelect AllTry It&%
Dim i 'use i as a counter
i = 0 'assign a value to i
Do While i&=10 'Output the values from 0 to 10
& response.write(i & &&br &&)
1 'increment the value of i for next time loop executes
现在,让我们考虑一个更有用的例子,创建下拉几天,几个月或几年清单。您可以使
用此登记表的代码,例如。
'creates an array
Dim month_array(11)
month_array(0) = &January&
month_array(1) = &February&
month_array(2) = &March&
month_array(3) = &April&
month_array(4) = &May&
month_array(5) = &June&
month_array(6) = &July&
month_array(7) = &August&
month_array(8) = &September&
month_array(9) = &October&
month_array(10) = &November&
month_array(11) = &December&
Dim i 'use i as a counter
response.write(&&select name=&&day&&&& & vbCrLf)
Do While i &= 31&
&& response.write(&&option value=& & i & &&& & i & &&/option&& & vbCrLf)
response.write(&&/select&&)
response.write(&&select name=&&month&&&& & vbCrLf)
Do While i &= 11
&& response.write(&&option value=& & i & &&& & month_array(i) & &&/option&&
& vbCrLf)&&&
response.write(&&/select&&)
response.write(&&select name=&&year&&&&)
Do Until i = 2005&&&
&& response.write(&&option value=& & i & &&& & i & &&/option&& & vbCrLf)&&&
response.write(&&/select&&)
%&您可能感兴趣的文章:24小时热评
热点排行榜当前位置: >>
visual foxpro6.0全套教案
第 1 章 Visual FoxPro 6.0 概述Visual FoxPro 数据库是一个关系型数据库。 C Windows 环境。 C FoxBASE+汉字操作系统(UCDOS) ? Visual FoxPro 不需要用户编程就可以建立一个面向对象的数据库应用程序,所以在 众多的数据库软件中,Visual FoxPro 脱颍而出,成为一种通用的数据库软件。 1.1 Visual FoxPro 6.0 的发展过程 ? 主要经历了 3 个阶段 1.dBASE 阶段 2.FoxBASE 和 FoxPro 阶段 3.Visual FoxPro 阶段 ? 1995 VFP 3.0 版运行于 Win3.x、Win9X 和 WindeosNT 环境 ? 1997 VFP 5.0 中文版。 ? 1998 VFP 6.0 中文版。 VFP6.0 的功能 1)为某种信息创建一个表,利用表存储相应的信息。 (2)定义表间的关系,将各表中的数据地联系在一起。 (3)创建查询搜索记录,对记录排序和分组并根据查询结果创建报表、表及图形。 (4)可以通过视图更新表中的数据及从网上取得数据,从而收集或修改远程数据。 (5)创建表单来直接查看和管理表中的数据。 (6)可以创建一个报表来分析数据或将数据以特定的方式打印出来。 1.2.2 VFP 的特点 1.利用向导来操作,方便易用 2.可视化开发 3.事件驱动 4.面向对象编程 5.生成器 6.组件库 7.VFP 基础类 8.活动文档 9.对动态图形文件的支持 9.程序语言的增强 10.支持 OLE 拖放 11.新增和改进的生成器和编译器 1.3 VFP6.0 系统的软硬件环境 ? 软件环境 C Windows 98 C Windows NT 4.0 ? 硬件环境 C 奔腾Ⅱ以上的微型计算机 C 32MB 以上的内存 C 硬盘空间 240MB 以上。 1.5 VFP6.0 系统的启动 ? ??启动 VFP C 在D开始‖菜单中启动 VFP C 用快捷方式启动 VFP 退出 VFP(以下并列) C 在D命令‖窗口中,打Dquit‖。 C 直接按 Alt+F4。 C 在D文件‖菜单中,选择D退出‖命令。 C 双击主窗口左上角的控制菜单。 C 在主窗口控制菜单中,选择D关闭‖。1.6.1 主窗口介绍 ? 主窗口: ? ? ? ? ? 标题栏 菜单栏 工具栏 状态栏 命令窗口(CTRL+F2 显示)1.6.2 用 VFP 开发程序的方式 4 种方式: C 向导方式 C 菜单方式 C 程序执行方式 C 命令方式习题1.VFP6.0 有哪些功能和特点? 2.VFP6.0 应用程序使用的方式有几种?向导方式的操作步骤怎样? 3.了解 VFP6.0 的安装方法,熟练掌握 VFP6.0 的两种启动方法。 4.了解 VFP6.0 主窗口的组成,掌握工具栏中的工具按钮的功能。 5.掌握D文件‖菜单中的文件操作命令的使用方法。第2章VFP6.0 基础2.1 VFP6.0 的性能指标 ? 记录的最大长度:64K 字节。 ? 表文件的最大长度:2G 字节。 ? 表中字段数:255 个。 ? 在内存中打开的表的最大个数:255 个。 ? 数据表的最大记录数:10 亿个。 ? 字符型字段的最大长度:255 字节。 ? ? ? ? 数值型字段表示十进制数的最大位数:20 位。 浮点型字段表示十进制数的最大位数:20 位。 数值计算时最多可以精确的位数:16 位。 整数的最大值: +2 147 483 647。 ? 整数的最小值: -2 147 483 647。 ? 定义的内存变量的最多个数: 65 000。 ? 数组下标的最大值: 65 000。 ? DO 调用命令最多可以嵌套的层数:118 层。 ? READ 命令最多可以嵌套的层数:5 层。 ? 结构化程序设计命令的最大嵌套层数:384 层。 ? 在自定义的过程或者函数中可以传递参数的最大值:27。 ? 报表页面可以定义的最大长度:20 英寸。 ? 报表分组的最大层数:118 层。 ? 可以同进打开浏览窗口的最大个数:255 个。 ? 每一行命令的最大长度:8192 字节。 ? 每一个宏替换的最大长度:8192 字节。 2.2 VFP 文件组成 ? VFP 的常用文件类型格式: C 数据库 项目 C 表查询 连接 C 浏览 远程浏览 C 格式 报表 C 标签 程序 C 文本 菜单 表 1.1 常用的文件类型 扩展名 类 型 .DBC 数据库文件 .DCT 数据库备注文件 .DCX .BAK .DBF .FPT .PJX .PJT .PRG .FXP 数据库索引文件 备份文件 数据表文件 数据表备注文件 项目文件 项目备注文件 源程序文件 源程序编译后的文件.CDX .IDX .SCX .SCT .SPR数据表复合索引文件 单一索引文件 表单文件 表单备注文件 为源程序 .SPX .FRX .FRT .LBX .LBT .MNX .MNT .MPR .MPX .QPR .QPX .FMT .MEM .VUE .APP .TXT .EXE为目标程序 报表文件 报表备注文件 标签文件 标签备注文件 菜单文件 菜单备注文件 菜单源程序文件 菜单编译文件 生成的查询程序文件 查询程序文件编译后的文件 格式文件 内存变量文件 视图文件 应用程序文件 文本文件 可执行应用程序文件项目管理器? 项目: C 是文件、数据、文档的集合 C VFP 的对象被存于具有后缀为.PJX 的文件当中。 ? 项目管理器: C 组织和管理文件 C 如建立表、数据库、查询、表单、报表以及应用程序等。 ? 通过把已有的数据库文件添加到一个新的项目中,用户可以为自己创建一个项目。 ? 把应用程序的多个文件组织成一个文件 C 注:.PRG、报表格式文件和标签格式文件都能组合在一个文件中 C 如果表和索引不再修改、添加,也可以组合到里面 C 有利于保密源代码 ? 名为.APP 或.EXE C .APP 文件可以用 Do 命令来执行 C VFP 专业版编译成.EXE 文件。项目管理器的功能? (1)查找文件 C 查找数据库文件、表单、报表的详细内容 ? (2)创建和修改文件 ? (3)添加和移去文件 ? (4)共享文件 C 通过与其他项目共享文件,可以用在其他项目开发上的工作成果。 C 操作时只需把别的项目管理器中的文件对象拖到本项目管理器中即可。项目管理器的组成(1)文件对象卡 C 数据 文档 C 类库 代码 C 其他 (2)分层结构视图 C 点击D+‖,列出下级文件类型 (3)命令按钮 C 新建 添加 C 修改 运行几个概念(1)数据库: C 由数据表组成,及其相互关系。 C 数据库文件的后缀为.DBC。 (2)自由表: C 不是数据库的一部分,存于后缀为.DBF 的文件里 C 可以将自由表加入数据库中。 (3)查询: C 实现对存于表中的特定数据的查找。 C 按照一定的查询规则从D表‖中得到数据 C 采用 SQL 查询,后缀为.QPR 的文本文件中 (4)视图: C 执行特定的查询,从本地或远程数据源中获取数据,并允许用户对所返回的 数据进行修改。 C 视图依数据库而存在,并不是独立的文件。 (5)表单 C 显示和修改数据D表‖中的内容。 (6)报表 C 实现对 VFP 数据表查询结果的格式化打印输出。项目管理器的操作? 新建一个项目:文件―新建 C 1.向项目中加入一个新文件 C 2.从项目中移去一个文件 C 3.在项目中D新建‖一个文件 C 4.用D项目管理器‖修改一个文件其他操作1.浏览表的数据 2.项目信息的显示与编辑 3.给文件添加说明 4.项目间的文件共享 5.项目管理器的定制 C 移动位置,改变大小与外观 (1)外观定制 (2)顶层显示设计器设计器 功 能 表设计器 创建表,设置索引 数据库设计器 创建数据库,建立联系 表单设计器 创建表单,用户界面 报表设计器 创建显示和打印报表 查询设计器 在本地表上查询 视图设计器 创建可更新的查询 连接设计器 为远程视图创建连接 2.4.2 生成器 ? 生成器 功能 ? 表格生成器 生成表格 ? 表单生成器 生成表单 ? 参照完整性生成器 数据库表间创建参照完整性 ? 命令组生成器 生成命令组 ? 选项组生成器 生成选项组 ? 自动格式生成器 格式化控件组 ? 组合框生成器 生成组合框 ? 编辑框生成器 生成编辑框 ? 列表框生成器 生成列表框 ? 文本框生成器 生成文本框 工作目录的建立** ? 默认目录为其主目录 C 应用中产生的所有文件将存在此目录下。 C 不便于管理,要建自己的工作目录。 ? 步骤如下: C (1)工具菜单,中的选项 C (2)D文件位置‖中的D默认目录‖,按下D修改‖按钮 C (3)定位(L)的信息框中,输入位置,确定 C (4)设为默认目录 ? 命令方式: C Set default to 工作目录 C 如: ? Set default to d:\vfp ? 设 d:\vfp 为其工作目录习? ? ? ? ? ?题1.项目管理器有何作用?如何使用项目管理器来管理数据、文档? 2.用项目管理器建立一个新项目文件,怎样操作? 3.向项目管理器中添加一个文件,怎样操作? 4.从项目管理器中移去一个文件,怎样操作? 5.工作目录的建立方法是什么? 6.VFP6.0 中的设计器有几种?生成器有几种? 第3章内容数据库的建立和操作?介绍数据库、数据表的基本概念 ?数据库和数据表的建立 ?编辑表中的数据、记录修改与删除 ?表的索引等有关操作。概念 ?数据库(.dbc) C就是一个关于某一特定主题或目标的信息集合。?表(.dbf)C基本单位,是数据库的基础 C可以说表是关系数据库系统中的基本结构。 C要存数据,为所需记录的信息创建一个表。 C由行和列组成的,一行为一个记录,一列为一个字段。二维表简称表(Table)特征: (1)若干记录 (2)若干个字段,每记录具有相同结构的字段 (3)不同类型的字段来存储不同类型的数据 (4)字段的顺序与存储的数据无关 (5)记录在的顺序与存储的数据无关。表的字段?表是由记录组成 ?记录又由字段组成 ?字段的属性(表结构)C字段名 C字段类型 C字段宽度 C小数位数1.字段名 ?约定: C只能使用字母、汉字、下划线和数字 C见名知义 C & & = + / \ | [ ] : ? 空格 C字段名必须以字母或汉字开头,并且长度不能超过 118 个字符 C如:下列那些合法不以数字开头 不能含有空格; 不能含有各种运算符; × 3mn 姓名 1 mn3 × m n ×编 号 × S-N S_N × AI*X2.字段类型?不同类型的字段来存储不同类型的数据(1)字符型(Character) C通常用于存储键盘输入的文本数据。 ?汉字、字母、数字、空格、 ?符号及标点符号 C字符型数据必用双引号或单引号或[]来定界 C字符型字段的宽度最大为 254 ***** C如: CDhow‖ ?1134‘ [中国人](2)货币型(Currency)C保存货币数值时,用货币类型而不是数值类型字段 C最多保留 4 位小数位数,多则四舍五入至 4 位 C内存变量用$数值来赋初值?如:x=$999 ?? Type(?x‘)(3)数值型(Numeric) C数值型字段用来存储数值数据。 C它可以包含数字 0~9,也可以带正、负号或小数点 C如: (4)浮点型(Float) C浮点型字段在功能上等价于数值型字段。 (5)日期型(Date) C用于存储包含有年、月、日的日期数据 C长度为 8 字节 (6)日期时间型(DateTime) C用于存储包含有年、月、日、时、分、秒的日期和时间数据。(7)双精度型(Double) C双精度型用于存储精度要求较高、位数固定的数值,或真正的浮点数值。 (8)备注型(Memo) C长度固定为 4 字节 C用于存储不定长度的文本数据 C当文本数据长度可能大于 254,无法使用字符型存储时,使用备注类型字段 C所有备注型字段的实际内容存储在和表名相同,扩展名为.FPT 的备注文件中 (9)通用型(General) C通用型用于存储 OLE 对象数据 C字段宽度固定为 4 个字节,用于存储一个 4 个字节的指针,指向该字段的实际内容 C其内容存储在扩展名为.FPT 的文件中。 COLE 对象包括电子表格、字处理文档、图像或其他多媒体对象等 COLE 对象可以用链接方式存储在表中。 C存储数据的大小,取决于相的 OLE 服务程序,和磁盘空间大小的限制。 (9)整型(Integer) C整型用于存储整数数据 C字段宽度固定为 4 个字节。 C取值范围从-2 147 483 647 到 2 147 483 646。 (10)逻辑型(Logical) C.T.或.Y. 为逻辑真 C.F.或.N. 为逻辑假 C长度固定为 1 字节 (11)字符型(二进)((Character(Binary)) C字符型(二进制)用于存储不需要系统代码页维护的字符数据 C其他字段特性同字符型字段 C密码(各国) (13)备注型(二进制)((Memo(Binary)) C备注型(二进制)用于存储不需要系统代码页维护的备注字段数据。其他字段特性同备注型 字段。 数据类型(结)?数据类型(Type)13 种C-字符型 D-日期型 M-备注型 3.字段宽度 ?规定宽度 C字符型字段 C货币型字段 N-数值形 I- 整 型 G-通用型 F-浮点型 L-逻辑型 Y 货币型254 8 C数值型字段 C日期型字段 C备注型 C逻辑型 C日期时间型 C通用型字段20 8 4 1 8 4 ?用于存储一个 4 个字节的指针,指向该字段的实际内容。整型字段宽度固定为 4 个字节。?宽度(Width)(结)( 以下类型宽度固定)? 货币型、日期型、日期时间型、双精度型:8 字节 ? 整型、备注型、备注型(二进制) 、通用型:4 字节 ? 逻辑型:1 字节4.小数位数C有小数的字段:? 数值型 ? 浮点型 ? 双精度型C C字段宽度 = 整数部分宽度 + 小数点 1 位 + 小数位宽度 如小数位数不为 0 ,则小数位数至少要比整个字段宽度小 2小数位数?一个 N 形变量宽为 6,小数位数为 3,则这个变量最大可表示的数为多少? ?_ _.___?99.9995.空值(NULL)C C空值是用来标识一个字段D 没有值‖ 的标志 空值表示没有任何值或没有确定值C空值不等同于数值 0、空字符串或逻辑D假‖ C函数 EMPTY() 测试空值 C如果允许字段接受 NULL 值,则应选中该栏所在框 C表的关键字段不允许为 NULL 值字段类型 中文名称 宽度(字节) CCharacter 字符型 254 CCurrency 货币型 8 CNumeric 数值型 20 CFloat 浮点型 20 CDate 日期型 8 CDateTime 日期时间型 8 CDouble 双精度型 8 CInteger 整型 4 CLogical 逻辑型 1 CMemo 备注型 4 CGeneral 通用型 4 小结 说明 字母、汉字、数字、文本、符号 货币单位 整数或小数 同数值型 年、月、日 年、月、日、时、分、秒 双精度数值 整数 真或假 不定长的字母、文本、数字 OLE 图像、多媒体对象?数据库是表和表间关系的集合 ?表是由表结构和记录组成 ?表结构是由各不同字段构成 ?每一字段又具有字段名、数据类型、数据宽度、小数位数等属性 ?表中的每一个记录又具有相同的字段?建表的步骤:1)设计表结构 2)建表的结构 creat 表名 3)保存表文件 ctrl+w 4)输入记录 append browse 表结构的创建 1、表设计器 (1)打开“表设计器” 项目管理器/自由表/新建/新表/保存 注: A、也可从菜单或工具栏中直接新建表 B、与在“项目管理器”中新建表不同的是: 中 (2)在“表设计器”中创建表结构 表设计器/字段/输入/确定这样新建的表将不包含在项目 表结构的创建 2、用 create table -SQL 命令创建表结构Ccreate table |DBF 表文件名(字段名 1字段类型[(字段宽度[,小数位数])];[,字段名2 字段类型[(字段宽度[,小数位数])]]…)----编程时用 ?例:学生表结构 Ccreate table xs2(xh c(6),xm c(8),xb c(2),zydh c(6)) C教师表结构 Ccreate table js(xm c(8),xb c(2),gl n(2,0),csrq d,jbgz n(7,2),jl m) 数据表的建立?如:C一张名为教师档案文件 zgda.dbf?编号 姓名 性别 年龄 职称 工作时间 婚否 简历1 张黎黎 女 26 2 李 艳 女 30 3 刘 强 男 38 职工档案表结构(zgda.dbf) 助教 05/24/83 助教 09/14/90 讲师 11/24/76 T T T memo memo memo?字段名 ?编号 ?姓名 ?性别 ?年龄 ?职称 ?工时 ?婚否 ?简历 ?照片类型 宽度 小数位数 索引 NULL 字符型 4 无 升序 否 字符型 6 无 无 否 字符型 2 无 无 否 数值型 2 无 无 否 字符型 8 无 无 可 日期型 8 无 无 否 逻辑型 1 无 无 否 备注型 4 无 无 可 通用型 4 无 无 可表的打开 VFP 在使用一个表前必须把表打开?打开命令CUSE& 文件名&VFP 在结束使用一个表时,必须把表关闭?关闭命令CUSE CCLOSE ALL CCLOSE DATABASE/TABLE修改表结构 1、表设计器 项目管理器/选定表/修改 2、命令CUSE books CMODIFY STRUCTURE修改表结构 2、命令CALTER TABLE-SQL 命令 ? 添加字段:ADD [ COLUMN ] 子句 ? 重命名字段:RENAME COLUMN例: ALTER TABLE books ADD COLUMN 折扣 n(4,2) 子句 例: ALTER TABLE books RENAME COLUMN 折扣 TO zk 例: ALTER TABLE books DROP COLUMN zk 记录的处理 记录的追加 1、立即输入记录(浏览/编辑/追加方式) 2、浏览窗口下追加(USE/BROWSE) (表/追加新记录) 3、使用 INSERT - SQL 命令追加记录 insert into zgda(姓名,性别,年龄) values ('洪七公','男',900) 4、从其他表中追加记录? 删除字段:DROP [ COLUMN ] 子句?命令 APPEND CAPPEND FROM CAPPEND [ BLANK ]记录的浏览 1、浏览窗口C进入 : 命令?BROWSE?use books/显示/浏览 ?项目管理器/选定某个表/单击“浏览”按钮2、命令CBROWSECLIST / DISPLAY CBROWSE FIELDS如何定制浏览窗口? 书号, 书名, 作者 for ...?重新安排列的位置: C拖动?改变列的宽度:C拖动?显示或隐藏表格线:C显示/网格线?分为两个窗格:C左下角拖动6.3.3 记录的定位 几个概念 例1 假设 ZGDA 表有 848 条记录,先后执行以下命令 bof() eof() use books f f 1 skip -1 t f 1 skip -1 Error f 1 go bott f f 848 skip f t 849 skip Error 例2 RECN() Use books 1 go 5 5 skip +2 7 skip -3 4 locate for … 3、记录定位的实现recno()C? ? ? ?界面方式 (“ 表 ”―“ 转到记录 ”) 记录号:绝对定位 goto 定位:条件定位 locate for 作用范围:all,next,record,rest,for 找到/ 未找到 命令方式 绝对定位:GO( GOTO )CGO( GOTO ) TOP/BOTTOM 相对定位:SKIP(与索引有关)skip=skip 1 快速移动:SEEK 及 FIND 记录的修改 1、在浏览窗口中修改 EDIT / CHANGE / BROWSE 项目管理器/浏览 例:修改 books 表中第 5 条记录 use books edit record 5 记录的修改 2、批量记录的修改 (1)界面方式 D表‖―D替换字段‖―字段条件 (2)命令方式CUPDATE-SQL CREPLACE命令( 表不必事先打开, 以下同)命令USE books copy to temp use temp REPLACE 单价 WITH 5.00 FOR 单价&5 记录的删除?目的:C节省时空?删除步骤:C C逻辑删除 物理删除逻辑删除 C给要删除的记录加标记(*号)?标记要删除的记录(逻辑删除)C浏览窗口: ?单击小方框 C“表” ? “ 删除记录 ” C命令 DELETE FROM 表名[WHERE 过滤条件表达式]例: C删除教材表中库存在数量为 0 的记录 ?delete from books where 库存数量=0 物理删除?彻底删除(物理删除) C C C“ 表 ”? “ 彻底删除 ”命令 PACK ( 独占)? 删除有删除标记的记录命令 ZAP=delete all +pack ( 独占)恢复记录的删除C恢复带删除标记的记录(与 set dele法1 :无关)C小方框黑--&白 法2 : “ 表 ” C“恢复记录” 法 3 :RECALL [ 范围][FOR 条件表达式 1][WHERE 条件表达式 2] 例:recall recall all recall all for 库存数量=0 (这里的 all 可省) 说明: 缺省范围(当前记录,不是全部记录) 记录的删除C对带删除标记记录的访问(1) 测试记录的删除标记 deleted() C 有删除标记返回为真,否为假 (2) 控制对带删除标记记录的访问?set deleted on/off说明: ? 有些默认为 ON , 有些默认为 OFF 实验:? 先删除若干记录(逻辑删除) ?LIST 默认为 OFF ?SET DELETED ON ?LISTset deleted on/off?为 set deleted on 时C屏蔽掉有标记的记录,不能访问 C影响 Count 命令 C不影响 Reccount()?例:8 个记录,一个有删除标记CSet deleted on CCount to x C? X C? Reccount()7 8筛选记录 ?界面 “表”―“属性”―“数据过滤器” ?命令 CSET FILTER TO &条件表达式& CSET FILTER TO CFOR 子句:临时性记录筛选 例:USE ZGDA ?SET FILT TO 出版社=?石油大学‘ ?注意: C是隐藏而非删除 C与 FOR 子句不同 ?对 SE LECT-SQL、 DELETE-SQL、UPDATE-SQL 无效 筛选字段?表/属性/字段筛选 ?SET FIELDS TOCSET&字段 1& [, &字段 2&]fields to 姓名,性别表的使用 工作区的标识***?用数字来标识各个工作区(1―255) ?用相应工作区中表名来标识工作区C(此时表没有指定别名,如指定别名,用别名来标识工作区)?Sele 5 ?Use zgda ?Sele 4 ?Sele zgda?1-9个工作区常用英文字母 A-J?Sele 9=sele j工作区的转换?命令:CSelect工作区号/工作区中表别名/A-J?如: ?Sele 1 ?Use zgda ?Sele B ?Selct zgda?Select0 表示选择未用的号最小工作区Select O 例子 sele 1 use zgda sele 4 use zggz sele 0 ? select() 表的使用 表的使用返回选择的工作区号?操作非当前工作区中的表C把其它的工作区选为当前工作区?Sele 2C在命令中强行指定工作区?GO TOP IN ok关于表的打开和关闭?刚创建的表处于打开状态*1、表的打开C界面? 文件/ 打开 ? 窗口/ 数据工作期/ 打开 ?USE ?C命令?USE & 表文件名& ?USE & 表文件名& IN 0C多次打开同一张表(同时)?USE & 表文件名& AGAIN ? 例:USE books/SELE 0/USE XS AGAIN2、表的关闭C界面 ? 窗口/ 数据工作期/ 关闭C命令?USE ?USE IN & 别名/ 工作区& ?CLOSE ALL&& 数据库、索引、项目管理器等也被关闭 ?CLOSE DATABASES && 如果当前没有打开的数据库,则把自由表全部关闭 ?CLOSE TABLES && 关闭表,不关闭库 ? 退出 VFP注意:SQL 语句能自动打开表,但不会自动关闭表!表的独占与共享使用表的共享使用:?一张表可以同时被多个用户打开 ?(RECORD UNLOCKED)表的独占使用: ? 一张表只能被一个用户打开( 默认) ? (EXCLUSIVE )表的独占与共享使用?设置独占与共享打开表的默认状态C工具/选项/数据 CSET EXCLUSIVE OFF/ON(共享/独占)?强行用独占方式打开表CD打开‖―D独占‖复选框 CUSE & 工作表 & SHARED/EXCLUSIVE?设置改变,并不改变已经打开的表的状态 ?一张表同时被多次打开时,只以第一次的打开方式为准(窗口/数据工作期)利用缓冲访问表中的数据1、数据缓冲 在多用户环境下,用以保护对表记录所做的数据更新以及数据维护操作的一种技术 2、类型 (1)记录缓冲(行缓冲) :一次访问、修改、写一个记录 (2)表缓冲:对多个记录缓冲更新?两种锁定方式:(1)保守式缓冲:在多用户环境中,防止一个用户访问(读/写)另一个用户正在修改的记 录或表 (2)开放式缓冲:记录只在被写入时加锁 表的数据缓冲 表的数据缓冲 ? 保守式行缓冲 ? ? ? ?开放式行缓冲 保守式表缓冲 开放式表缓冲 不设置缓冲 设置表的数据缓冲 3、设置表的数据缓冲 (1)界面C窗口/数据工作期/属性/ C选中“允许数据缓冲”“锁定记录”“缓冲” , , CD在编辑时‖(保守式)D在写入时‖(开放式) CD当前记录‖(记录缓冲)D所有编辑过的记录‖(表缓冲)设置表的数据缓冲 (2)CURSORSETPROP() 格式: CURSORSETPROP(‘Buffering‘,缓冲类型值,[工作区|别名])C?1 ?2 ?3 ?4 ?5缓冲类型值无缓冲(默认) 保守式行缓冲 开放式行缓冲 保守式表缓冲 开放式表缓冲 例:为 XS 表打开开放式表缓冲: SET MULTILOCKS ON(除方式 1 外) USE XS = CURSORSETPROP( ‘Buffering‘, 5)利用缓冲访问表中的数据4、检测缓冲区中的数据是否与数据源表一致 (1)CURVAL()和 OLDVAL() CURVAL () 返回当前值 : OLDVAL () 返回初始值 : (2)GETFLDSTATE() 5、执行和放弃对缓冲数据的更改 (1)TABLEUPDATE()执行对缓冲行、缓冲表或临时表的修改 格式: TABLEUPDATE([AllRows][,lForce][,别名|工作区]) (2)TABLEREVERT()放弃对缓冲行、缓冲表或临时表的修改 格式: TABLEREVERT([AllRows][,工作区|别名]) 概念 ?物理顺序: C一般是按照其输入的顺序进行记录的存储顺序 C顺序找,速度慢 C不便于查找需要的信息 ?逻辑顺序: C记录的处理顺序 C(快速) C可以使用索引来改变记录的顺序即逻辑顺序 C根据表中字段的值,建立具有逻辑顺序的索引文件,然后根据索引文件重新排列数据库表中显示的记录。 索引文件 1、索引:?如同目录 ?数据库的辅助文件,不能单独使用 C可以按一个字段索引,也可以多个 C一个表可以创建多个索引 C索引存储在索引文件中 C索引文件中存储着记录号和索引字段的索引值理解索引 ?索引可以理解为根据某一字段的值进行逻辑排序的一组指针?按照索引显示记录,VFP 按照指针排列的顺序分别读取每一条记录,而这些记录在数据库中的实际存储位置并未改变。 按年龄索引后的表文件 姓名 年龄 张黎黎 26 李 艳 30 刘 强 38 DA.DBF 姓名 年龄 刘 强 38 李 艳 30 张黎黎 26 DA.DBF 关键字与索引标识 (1)索引关键字(Index Key) ?建立索引的依据(索引表达式) ?字段/字段表达式 ?VFP 使用索引关键字来显示和访问表中的记录 (2)索引标识(Tag)?索引关键字的名称(索引名) ?&=9 字节索引的类型?4 种类型索引(根据关键字段)C主索引 C候选索引 C普通索引 C惟一索引 表的索引 2、索引的类型C主索引(Primary indexs)?在数据库表中,每张表只能创建一个主索引 ?组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值(学号可以,姓名不可以) ?自由表不能建立主索引 ?主索引存储于数据库表的结构复合索引中C侯选索引(Candidate indexs)?在指定的关键字段或表达式中不允许有重复值的索引 ?一张表中可以建立多个侯选索引 ?侯选索引可用于数据库表和自由表表的索引 2、索引的类型C普通索引(Regular indexs)?可以决定记录的处理顺序 ?允许关键字段或表达式的值出现重复 ?对一张表可以创建多个普通索引(GL)C唯一索引(Unique indexs)?允许有重复值 ?具有重复值的记录仅存储其中的第一个(出版社) ?惟一:对每一个特定的关键字只存储一次,而忽略了重复值第二次或以后的记录表的索引 3、索引文件的种类 索引本身并不改变表中数据的物理顺序 C结构复合索引(CDX) ?与数据表同名 ?文件名是在创建时由系统自动给定 ?结构复合索引文件与表文件同步打开、更新、关闭 ?是表的一部分 C非结构复合索引(CDX) ?文件名由用户给出 ?非结构复合索引文件中不能创建主索引 C独立索引(IDX) :与 FoxBase 兼容 创建索引文件?表设计器C“表设计器”――“索引”选项卡?Index 命令 INDEX ON &索引表达式& TAG &索引标识名& [FOR &条件表达式&ASCENDING|DESCENDING] [UNIQUE|CANDIDATE](允许相同|不允许相同)?注意C不能对备注字段和通用字段建立索引 C不要建立无用的索引析 Index 命令 ?结构复合索引(CDX) ?非结构复合索引(CDX) ?独立索引(IDX) 索引的建立?步骤:C项目管理器---表---修改 C表设计器---索引 C输入索引名----类型---表达式 ?不要对每个字段都建立索引,否则会降低程序的运行效率对多个字段索引?操作步骤:C项目管理器--选择已索引的表,选D修改‖ C表设计器,选索引,输入索引的名称 C在D表达式‖框中,输入对多个索引的表达式 C如:按性别与年龄进行索引,其表达式应为 C确定性别+STR(年龄,2)?可以对多个字段建立索引 ?其排序是按照表达式的值进行的索引的修改和删除?索引的修改C表设计器?“表设计器”――“索引”选项卡C命令?INDEX 命令修改原索引?索引的删除C表设计器?“表设计器”――“索引”选项卡CDELETE TAG 删除索引标识索引的使用?设置主控索引 主控索引:决定显示或访问表中记录的顺序的索引 主控索引可以是: ?复合索引文件中的一个标识(主控标识) ?一个独立索引文件(主控索引文件) C打开表的同时指定主控索引 ?Use 表名 index 索引文件名C打开后再设置主控索引C 窗口 / 数据工作期 / 属性/ 索引顺序 C 命令 SETORDER TO TAG & 标识名&?取消主控索引?SET ORDER TO?索引函数 TAG()?CDX()ORDER() 索引的使用?利用索引快速定位记录CSEEK命令?SEEK 命令只能在索引过的表中使用, 并且只能搜索索引关键字(XS/96092) ?EOF() 与 FOUND()CSEEK函数(=SEEK+FOUND())筛选记录(set filter to)?操作步骤:C项目管理器--选择已索引的表,选D修改‖ C表设计器,选索引,输入索引的名称 C在D筛选‖处,输入过滤表达式 C按D确定‖,完成筛选表达式的建立 C如:筛选性别为男的记录,表达式为Set filter to 性别=?男‘ ?可以实现对记录的控制?4 4 ?5 5 ?6 6 ?7 7 ?8 8王秋燕 女 45 讲师 9/09/70 T memo gen 姜丽萍 女 45 讲师 9/09/70 T memo gen 陈丽丽 女 38 讲师 09/27/72 T memo gen 刘 刚 男 50 副教授 06/23/61 T memo gen 王 良 男 39 讲师 08/09/78 T memo gen 习 题 1.在创建表之前需要做好哪些准备工作? 2.过滤器有什么作用?怎样设置过滤器的过滤字段? 3.VFP 中的索引有哪几种?索引的使用应该遵守哪几条原则? 4.建立一个D职工档案‖表,参考本章例题。建立一个D工资‖表,表的内容自己定。 5.建立一个D学生成绩‖表,表的内容自己定。 6.将D职工档案‖表,复制一个新文件,先添加几个记录,进行修改和删除操作。 (1)用D浏览‖或D编辑‖进行表的修改操作。 (2)给前 3 个记录做删除标记,然后再恢复操作。 (3)将职称是D助教‖的记录做删除标记,然后再彻底删除。 7.用过滤器,筛选记录,将D职工档案‖表进行如下操作: (1)浏览前 4 个记录,只列出姓名、性别和工资三个字段的内容。 (2)浏览男的全部记录的内容。 (3)浏览职称是D讲师‖并且性别是男的记录的内容。 8.将D职工档案‖表,按下列要求建立索引文件: (1)按职称建立索引文件。 (2)按年龄建立索引文件。 理 解?数据库提供一个环境 ?文件名 DBC ?由多表及其关系组成 ?表提供记录信息 ?文件名 DBF?可不放数据库中,自由表索引应遵循原则 (1)为了提高速度,用普通索引、候选索引或主索引 (2)控制字段的重复值对数据库D表‖用D主索引‖或D候选索引‖,对于D自由表‖,用D候选索引‖。第4章数据库的管理数据库的设计 ?数据库是一种工作环境 ?存储了一个D表‖的集合 ?在表之间可以建立关系 ?对数据字段可以设置属性和触发规则 ?一个数据库文件具有.DBC 的后缀。 ?不同主题内容的信息保存在不同的表当中 数据库的设计步骤: ?确立D数据库‖的功能: C确定收集信息的范围,并仔细收集这些信息?确定表的种类与表的结构:C根据每个表的信息,确定表中的D字段‖,将字段作为D表‖中的一列?确定表间的关系:C将所创建的D表‖加以分析,确定各个字段之间的D关系‖ C要明确为D一对一‖、D一对多‖关系 C对于D多对多‖关系转化为D一对一‖、D一对多‖关系建自由表还是数据库表 ?自由表 C只存储相对独立的信息 C没有依靠其它表的信息或被其他表所引用,可以使用自由表 ?数据库表有更为强大的功能 C它可以使用长表名和长字段名 C表中的字段可以有标题和注释 C表中的字段可以设置D默认值‖ C能设置字段级和记录级D规则‖ C对于插入、删除、修改等数据库操作可以设置触发器 C它还可以实现同远程数据源的连接,创建本地视图和远程视图 数据库的简单操作 ?可通过 C项目管理器 C表设计器 C数据库设计器 数据库的打开 操作步骤如下: ?项目管理器,选择想要打开的数据库 ?选择修改按钮,进入数据库设计器 数据库设计器的操作 ?全部折叠 C库设计器上右击鼠标 C在出现的快捷键中,选择D全部折叠‖ ?全部展开 C库设计器上,右点击鼠标 C在快捷键中,选择D全部展开‖ ?在库设计器中,选中表,右点击鼠标,选择折叠或展开?重排:C选择菜单数据库,然后选择重排 C重排方式,然后按确定?数据库属性:C右击鼠标 C选择属性 C可以输入数据库的属性 C选择显示的类型 C选择D确定‖?关闭数据库设计器?把自由表添加到数据库中 方法一 ?文件---打开,打开项目 ?选中的数据库是:教工 ?选中数据库下的D表‖文件类型 ?单击D添加‖按钮 ?选中要加入的表文件,再按D确定‖ ?当自由表添加到数据库中时,其D表设计器‖也变成了D数据库设计器‖,即也拥有了数据库 的所有属性 把自由表添加到数据库中 ?方法二 C文件---打开,打开项目 C选中的数据库是:教工 C选修改按钮,显示数据库设计器 C选择数据库菜单 C再选D添加表‖ C选择要加入的表名,按确定 C如果所选择的是自由表,就添加到所选中的数据库中 C表已经是数据库表,不能添加 ?数据库中的表删除 C文件----打开,打开项目 C选中的数据库是:教工 C选择修改按钮,屏幕显示D数据库设计器 C选中要删除或移去的表,选择移去 C如果不想删除此表,就选择D移去‖,如果要想删除此表,就选择D删除‖ ? 注: C用户向数据库中添加的D表‖,只能是自由表 C表在同一时间只能属于一个数据库 在数据库中查找表 ?操作步骤如下: ?文件--打开,打开项目 ?选中的数据库是:教工 ?选择修改,显示数据库设计器-教工窗口 ?选择D数据库‖菜单,选D查找对象‖命令 ?在查找对话框中,选择要查找的表或视图 字段与记录属性的常用概念 1.触发器 C在数据库表进行一个插入、更新、删除操作之后,运行的记录事件级代码 C不同的事件激发不同的动作 C触发器在有效规则之后运行 C常用于检查已建立永久关系的数据库表之间的数据完整性 C触发器只存在于数据库表中 C自由表中不存在触发器 C触发器是数据库的一部分 C受数据库的管理2.有效性规则 C检查输入数据是否满足某些条件的过程 3.记录级规则 C一种与记录有关的有效性规则 C当插入或修改字段值时被激活 C多用于数据输入的正确性 C记录被删除时不用使用有效性规则 C记录级规则在字段级规则之后和触发器之前被激活 4.字段级规则 C是一种与字段有关的有效性规则 C当插入或修改字段值时被激活 C多用于数据输入正确性检查 C字段级规则在记录级规则和触发器之前被激活 5.数据字典 ?包含数据库所有表信息的一个表 ?存储在数据字典中的信息称为元数据 ?比如: C长表名 C长字段名 C有效性规则、触发器 C数据库表间的永久关系 C数据库有关对象的定义,如视图和命名连接 ?数据字典使得对数据库的设计和修改更加灵活 ?使用数据字典,可以设置字段级和记录级的有效性规则保证主关键字字段内容惟一性 设置字段的显示属性 ?字段的显示属性: C显示格式 C掩码 C标题 1.设置字段的标题 ?定义数据库字段名称时,以英文缩写为多 ?难以真正理解字段的含义 ?标题属性,给字段添加一个说明性标题 操作步骤: C项目管理器 C选定表 C修改,进入表设计器 C选定要添加标题的字段,如姓名 C单击D是‖按钮,保存表结构此时浏览表,姓名显示为职工姓名 2.设置字段的显示格式 ?格式: C确定一个字段在表单、浏览窗口或报表中的显示格式 C输入所需的格式码 C格式实际上是字段的输出掩码 ?常用的格式码: A――表示只允许输出文字字符(禁止数字、空格或标点符号); D――表示使用当前系统设置的日期格式; L――表示在数值前显示填充的前导零,而不是用空格字符; T――表示禁止输入字段的前导空格字符和结尾空格字符; !――表示把输入的小写字母字符转换为大写字母。 3.设置字段的掩码 ?输入掩码: C可以确定字段输入的格式 C屏蔽非法输入,减少人为的数据输入错误 ?常用的输入掩码: CX――表示可输入任何字符; C9――表示可输入数字和正负符号; C#――表示可输入数字、空格和正负符号; C$――表示在固定位置上显示当前货币符号; C$$――表示显示当前货币符号; C*――表示在值的左侧显示星号; C.――表示用点分隔符指定数值的小数点位置; C,――表示用逗号分隔小数点左边的整数部分,一般用来分隔千分位。 例如 ?年龄字段的输入掩码为 99 C年龄字段只能接受数字输入,而不能输入空格字符、字母等 ?姓名的显示格式指定为 AT C姓名两个字段只能接受字母或汉字输入,而不能输入空格字符、数字 ?注: C设置格式 ?一个作用是限制显示输出, C输入掩码: ?另一个作用是限制输入 输入字段的注释 ?注释使字段意义更加明确 ?步骤: C表设计器 CD字段注释‖文本框中,输入描述信息 D表达式生成器‖窗口? ?有...按钮,显示一个对话框 ?表达式:C用运算符把内存变量、字段变量、常数和函数连接起来的式子 C表达式用于计算和描述一个操作条件 C根据处理结果返回一个值?数值型 ?字符型 ?日期型 ?逻辑型表达式生成器 C方便快捷地生成表达式 ?5 个部分: ?表达式文本编辑框 ?函数列表框 ?变量列表框 ?表或视图下拉列表框 ?控制按钮 1.表达式文本编辑框 ?用于编辑表达式 ?从列表框选择出来的选项将显示在这里, ?直接在这里输入和编辑表达式 ?可以输入各种各样的操作条件 C字段级有效性规则 C记录级有效性规则 C参照完整性规则 2.函数列表框 C可以选择表达式所需的函数 ?分为: C字符函数 C数学函数 C逻辑函数 C日期函数 ?字符函数列表框: C有用于处理字符和字符串的函数及字符运算符 3.变量列表框 C列出了当前表或视图的字段变量 ?变量列表框 ?内存变量 ?系统变量 C从变量列表框中,可以选择表达式所需的变量 4.表或视图下拉列表框 C可以选择当前打开的表或视图 5.控制按钮 ?4 个命令按钮:C确定?完成表达式生成,并退出表达式生成器C取消 C检验?单击D检验‖按钮,可检验生成的表达式是否有效C选项?单击选项,进入表达式生成器选项对话框字段有效性 ?为了防止这些非法数据的录入 C通过显示属性来控制 ?字段的显示格式 ?输入掩码 C只是码级的限制 C通过字段验证方式来控制 ?合法的字符组合在一起是否合法、是否符合逻辑就无法在此进一步 字段验证 C数据库表的字段属性之一 C字段通过了字段显示格式和输入掩码的限制,输入了数据以后,还要通过字段验证才可以 存储到字段中去 ?字段有效性有 3 个表达式文本框:C规则 C信息 C默认值字段的默认值 C新记录输入时所默认的字段值 C可以简化操作,提示输入格式,减少输入错误,提高输入速度 ?步骤: ?表设计器中的D默认值‖属性框中 ?输入默认值 如: ?性别字段输入默认值D女‖ ?单击D正确‖按钮 2.设置字段有效性原则 ?一个规则判断输入的数据是否符合字段的要求 ?在规则文本框中,可以输入字段验证的规则 ?字段输入完成,系统计算表达式的值 C如值为真,输入通过字段规则的验证 C否则不允许输入的值存储到字段中去 ?例如 C教工年龄数据必须大于 0 C小于 0,输入的数据是无效的 ?有效性规则:C字段级有效规则?字段中单个信息输入的数据是否有效C记录级有效性规则?整条记录输入完毕后才开始检查数据的有效性记录有效性 C记录级有效性规则属于表的有效性规则 C可以控制用户输入到记录中的信息类型 C记录级有效性规则检查不同字段在同一记录中的限制,从而保证不违反数据库的商业原则 ?步骤: C表设计器中,单击D表‖选项 C规则中,输入规则表达式 注: C记录有效性规则当记录值发生改变时被激活 C指针离开记录时,VFP 检查记录有效性规则 ?录值没有改变,规则不被触发 ?修改了记录,没移动指针,此时关闭窗口,记录有效性规则仍被检查 C如: ?iif(2003-year(工作时间)&年龄,.t.,.f.) 设置触发器 ?触发器: C当表中的记录被指定的操作命令修改时,触发器被激活 C触发器能执行数据库应用程序要求的其它操作 C触发器可执行: ?对记录的修改 ?进行参照完整性的检查 ?触发器是作为表的特定属性来存储的 ?删除表,相关的触发器也将被删除 ?当进行了其它有效性检查后,触发器被激活 ?只能删除姓张的记录:D张‖$姓名 使用长表名与注释 ?步骤: ?表设计器中,可用长表名和表的注释 ?在D表名‖框中,输入长表名 ?然后选D表属性‖ ?输入表的注释 表名: C可以由字母、数字、下划线或汉字组成 C第一个字符必须是字母、下划线或汉字 C默认的表名及.DBF 文件名 长表名 C数据库表,可以建立一个长表名 C最多可以包含 118 个字符 C可以用来代替短表名来标识数据库表 C定义了长表名,表在界面中,显示长表名 C表的注释可以使表的功能易于理解使用长字段名、标题与注释 ?自由表的字段名最多可包含 9 个字符 ?数据库字段名最多可以包含 118 个字符 ?从库中移去表,其长字段名将被截断为 9 个字符 ?一个表和数据库相关联时,必须使用长字段名来引用该表中的字段 字段的说明:C使表更容易被理解更新 C项目管理器中,选择字段后,会显示该字段的注释文本 C数据库表中的每个字段可以有一个标题创建和编辑关系 ?关系: C永久关系 ?永久关系一旦创建就保存在数据库文件中 ?在打开数据库时随即被打开 ?在D库设计器‖和数据环境中显示为表索引间的连接线 ?在永久关系的基础上,可设置表间的参照完整性规则, 用以保证数据库各表相关数据的一致 性 C临时关系 ?在使用时临时创建的 ?在D查询与视图设计器‖中,是自动作为默认连接条件的数据库表间关系 ?关闭其中一个表时关系即被自动关闭 临时关系 ?通过主表记录指针的移动来控制子表记录指针的移动 ?这是临时关系和永久关系不同的特征 ?在一对多关系表间,建立临时关系以后,在关系的D一‖方表中,选择一条记录时,会按关系 字段的值自动访问到D多‖方表中的相关记录 永久关系: C通过连接不同表的索引可以很方便地建立表之间的关系,被存储在数据库文件中,所以将 这种关系称为永久关系 CVFP 6.0 就自动将永久关系作为查询、视图、表单和报表的默认关系 C利用永久关系还可以存储参照完整性信息 建立永久关系 主关键字字段与外部关键字字段: C关联的表有一些公共字段 ?主关键字字段 C用于标识主表中的某一特定记录 C根据主关键字字段建立一个主索引 ?外部关键字字段 C用于标识相关表中的相关记录 C外部关键字字段建立一个普通索引?哪个表包含主记录,哪个表包含相关记录C并且普通索引和主索引必须带有相同的表达式?三种关系:?一对一C表 A 中的一条记录,在表 B 只能有一条记录 CB 的每一条记录也在表 A 中只能有一条记录与之对应 C并不常使用?一对多C最为普通 C表 A 中一条记录,表 B 中有多条记录对应 C表 B 中的一条记录,在表 A 中只有一条 C一方要建立主关键字或候选关键字 C多方要使用普通索引?多对多C转化为D一对一‖或D一对多‖关系建立永久关系 ?永久性关系并不控制表内记录指针间的关系 ?步骤如下: (1)建立表的索引 C一方要建立主关键字或候选关键字 C多方要使用普通索引 (2)拖拽: C在D库设计器‖上,D一‖方的主索引,拖拽到D多‖表的与其对应的普通索引之上 建立临时关系 ?此处少一点 参照完整性 ?表间彼此相关,改一表,可能使其关系发生变化 C删除主表中记录,相关表中的记录就找不到与之对应的父记录,就破坏了表之间的原有关 系 C参照完整性,利用相关表间的制约关系,互相参照,控制相关表数据的完整性?参照完整性规则?更新规则 ?删除规则 ?插入规则?控制在相关表中的插入、更改或删除记录例如 ?当主表中没有相关的记录时,记录不得追加到相关子表中 ?当主表中某条记录在相关子表中有相关记录时,这条主表记录不允许删除 ?当主表的关系字段值改变将导致相关子表中出现无关记录时,在主表中不允许做这种改变 步骤如下: ?在D库设计器‖中,双击关系线,打开编辑关系对话框 ?单击参照完整性按钮,打开生成器 ?单击要实施参照完整性的关系行 ?单击D更新‖右边的箭头 ?选择D级联‖、D限制‖或D忽略‖ ?单击D确定‖按钮 ?级联: C更新主表关系字段时,同时自动更新子表中的相关记录的关系字段值 ?限制: C子表中有相关记录时,禁止更新主表相应记录的关系字段值 ?忽略: C表示忽略主子表间的关系,不限制主表关系字段的更新 使用多个数据库 ?两种方法:C同时打开多个数据库 C不打开数据库,而引用其中的表End?1.选择?从关系中找出满足给定条件的诸元组称为选择。其中的条件是以逻辑表达式给出,该逻辑表达式的值为真的元组被选取。?该运算的一般表示方法为:SELECT &关系名& WHERE &条件&?2.投影从关系模式中挑选若干属性组成新的关系称为投影。 这是从列的角度进行的运算, 相当于对 关系进行垂直分解。 一般表示方法为: PROJECT &关系名& (属性 1,属性 2,…)?3.联接联接是将两个关系模式的属性名拼接成一个更宽的关系模式,生成新的关系中包 含满足联接条件的元组。 该运算的一般表示方法为: JOIN &关系 1& AND &关系 2& WHERE &条件& 第5章查询与视图?在数据库的应用中,查询是数据处理中不可缺少的、最常用的。VFP 6.0 提供了两种较好的方法,这就是查询文件和视图文件。使用D查询设计器‖,能方便地生成一个查询,从而获得 用户所需要的数据。 视图能帮助用户从本地或远程数据源中获取相关数据, 而且还可以对这 些数据进行修改并更新,VFP 6.0 将自动完成对源表的更新。 查询?查询:C从数据表中获取所需要的结果 C即设定一些过滤条件,并把这些条件存为查询文件 C在每次查询数据时,调用该文件并加以执行 C查询出来的结果可以加以排序、分类 C查询出来的结果可存储成多种输出格式?图形 ?报表 ?标签视图?视图:C能够从本地或远程表中提取一组记录 C使用视图可以处理或更新检索到的记录 C即设定条件,可从几个数据表文件中过滤出所要求的数据,其结果存储成实际的记录数据 C可以当作实际的数据表文件来使用 C视图中的数据记录更改后,原表中的记录也要随之修改查询与视图的区别 ?存在差异: C结果 ?查询的执行结果可以存储成多种数据格式 ?视图的查询结果同一般的数据表文件一样,可以当作数据表文件来使用 C数据 ?查询供输出查看,并不能回存 ?视图则可修改并且回存到数据表中 ?即 C查询文件的结果不属于数据库 C而视图文件存在于数据库中 ?视图的数据来源: C数据表文件 C视图 C服务器上的数据表文件 SQL 简介 ?结构化查询语言 CSQL(Structure Query Language) C目前美国国家标准组织 ANSI 的标准数据语言 C已有 90 多个数据库管理产品支持 SQL 语言 C已在微型计算机、小型机乃至大型机等各种机型上运行 C用户只需要指出D干什么‖,而不需要知道D怎么干‖,即存取路径的选择和 SQL 语言操作的过程由系统自动完成 C语言结构接近英语口语,是一种用户性能良好的语言,非常便于用户的学习和掌握?SQL 语言查询操作:C用 SELECT 语句来完成的 C它是 SQL 语言中最重要、最核心的一条语句。 C同时它也是 SQL 语句中最复杂并且最难掌握的一条语句1.SQL 的格式 SELECT 语句的基本格式如下: SELECT〈列名表〉 FROM〈表名〉 WHERE〈条件表达式〉 ORDER BY〈排序项目〉 [ASC/DESC] [ASC/DESC] [, ]... Select 说明: SELECT 子句的〈列名表〉C指出要显示的列的字段名 C可选一个或多个字段 C多个字段间用逗号分开?D*‖可以用来表示某一个数据表中的所有字段?FROM 子句的〈表名〉C指出在查找过程中所涉及的表 C可以是单个表,也可以是多个表 C多个表之间应用逗号分开?WHERE 子句的〈条件表达式〉 C指出所需数据应满足的条件 C条件表达式中必须用到比较运算符或逻辑运算符ORDER BY 子句 C可以控制查询所得记录的排列顺序 ?排序项目: C指出按哪一列的值进行排序 ?它可以是字段名或表达式 ?ASC 表示按升序 ?DESC 表示降序 ?缺省时按升序排列 C多个条件逗号分开 C先按第一列的值排,第一列值相同,再按第二列的值排序,依次类推 使用举例 单表查询 C即所有查询信息均出自一个表中 C在 SELECT 语句中表现为 FROM 子句中只有一个表名。 查询C无条件查询 C条件查询无条件查询 ?要获取表中所有的记录,则无需指定任何条件 ?无条件查询仅涉及 SELECT 子句和 FROM 子句 ?可以通过 SELECT 子句指定获取部分列或全部列的信息 例如: ?查询显示库中表中的所有信息,并按职称排序 select * from 职工档案 order by 职称 例如: ?查询显示D职工档案‖数据表中,职工姓名及年龄信息 select 姓名,年龄 from 职工档案 条件查询 C无条件查询是选取表中的所有记录 C实际应用中,用得更多的是条件查询 C即选取表中满足一定条件的记录 ?SELECT 语句中的条件由 WHERE 子句指出 CWHERE 子句后的条件表达式的值可以为真或假 C执行时,把条件为真的记录反馈回来 C对条件为假的那些记录信息,则什么也不执行 WHERE 子句的格式 WHERE &条件& C多重条件,应使用逻辑运算符来连接几个简单条件 C对于字符型常量应加引号 例如: 查询显示表中,年龄大于 35 的职工信息 ?select * from 职工档案 where 年龄>35 例如: 查询显示表中,职称是讲师的并且性别是女的职工姓名。 Cselect 姓名 from 职工档案 where 职称=&讲师& and 性别=&女& ?LIKE 运算符可以用来进行模糊查询 例如: 查询显示D职工档案‖数据表中,姓D刘‖职工的职称信息。 Cselect * from 职工档案 where 姓 like D刘%& C上例D刘%‖的含义是以D刘‖打头的任意长度的字符串 C对长度已知的匹配串,可用D-‖确定 多表查询 ?从多个数据表中提取信息 ?将两个或多个表的记录通过相关字段(连接字段)结合在一起,这种运算称为连接运算 ?连接运算是关系运算中的重要功能,它也是区别关系与非关系系统的重要标志关系型数据库的三种运算 三种运算C C C选择 投影 连接:? 通过两表的公共字段()来实现例如: 查询显示所有职工的姓名、职称及实发工资 ?select 职工工资.姓名,职工档案.职称,职工工资.实发工资; from 职工档案,职工工资; where 职工档案.姓名=职工工资.姓名 执行查询时 C先从D职工档案‖表中读出一个记录 C依次到D职工工资‖表中读取每一个记录与D职工档案‖表中数据拼接成一个新的记录,并判 别其中的两个姓名字段值是否相等 C若相等,取 SELECT 语句中相应的列作为结果输出 C如此循环,即求出了连接的所有元组 SQL 语句的使用方法?使用方法(1)在命令窗口中使用 当作一条独立的 VFP 命令在命令窗口中使用, 执行 SQL 命令前先要打开要查询的数据库 (2)在 VFP 6.0 程序中使用 (3)在查询设计器中使用 建立查询.QPR 步骤: (1)使用查询向导或查询设计器开始建立查询 (2)选择出现在查询结果中的字段 (3)设置选择条件来查找所需结果的记录。 (4)设置排序或分组选项来组织查询结果。 (5)选择查询结果的输出类型:表、报表、标签、浏览窗口等。 (6)查询可以用文件加以保存,它存为后缀为.QPR 的文件中。 (7)运行查询。 查询结果去向 输出去向 实现功能 浏览 在浏览窗口中显示出来 临时表 存于用户命名的只读的临时表中 表 用户命名的表中 图形 将查询结果与 Microsoft Graph 一起应用 屏幕 显示于 VFP 的主窗口中或当前活动输出窗口中 报表 输出到报表文件(.FRX)中 标签 输出到标签文件(.LBX)中 为查询结果排序 ?决定了查询输出结果中记录或输出行的先后次序 ?排序的操作步骤如下: ?项目管理器的数据选项卡中,选择查询 ?再选择查询,然后按D修改‖ ?在查询设计器中,选择排序依据选项 ?在选定字段框中,选择排序字段 ?按D添加‖按钮 筛选查询结果 ?操作步骤如下: C打开要进行查询的数据库所在的项目 C选择D查询‖ C然后按D修改‖ C选择D筛选‖选项卡 C在D筛选‖选项卡中,D字段名‖选择筛选字段,D否‖和D条件‖构造运算符,构造出筛选表达 式 查询结果的分组 ?分组就是为了把类似的记录压缩为一个结果记录,从而完成一组记录的计算 ?分组 CD查询设计器‖中的D分组依据‖选项卡 C在D分组依据‖选项卡的D可用字段‖中 C选择D性别‖字段 C单击D添加‖ 视图?视图:是一组可修改的记录C本地视图 C远程视图?它的来源C本地表 C其它视图 C存于服务器上的表或者远程数据源 C如通过 ODBC 和在服务器上的 SQL Server 相连。 C当用户对视图加以修改和更新时,这种修改和更新可以反映到数据源中创建视图和查询的差别: C视图是可更新的 ?如从本地或远程表中提取一组数据且想更新这组数据 C查询则不可更新 ?查询可以获得一组只读类型的结果 ?将查询保存在一个.QPR 文件中 End 第6章VFP6 应用程序设计结构数据类型和字段类型 1. 字符型(Character)?必须用西文方式的单或双引号括起。 ?LOCATE FOR 雇员.职务=?总经理‘?学号、书号、电话号码、邮政编码(注意不宜用数值型)2. 货币型(Currency)CcPrice=$90.356数据类型和字段类型 3. 日期型(Date)Cbirthday={05/20/1980} CDblankdate={} C日期格式受 SET DATE、SET MARK、SET CENTURY 命令的影响 C工具/选项/区域4. 日期时间型(DateTime)Ctdatetime={4/17/ pm} CTdateonly={4/17/ 2000 } CTtimeonly={8:30pm} CTblankdate= {:} C时间格式受 SET HOURS、SET SECONDS 命令的影响数据类型和字段类型 5. 数值型(Numeric)CSTORE 3.14159 TO pi Ctemp=90.116. 逻辑型(Logical)CSTORE .T. TO found CFlag=.F.7. 通用型(General)C用于在表中存储 OLE( 对象链接与嵌入) 对象常量:其值不发生变化的量 (1)常量分为四种类型: 数值型(N) :直接由数字或+、-、小数点构成。 字符型(C) :由字符、汉字组成,需加定界符。如‘沈阳‘、‖沈阳‖、 符不能嵌套,如:DAB‖CD‖‖,但 ?AB‖CD‖‘是合法的。 日期型(D) :用{}定界。 如{00-08-30}[沈阳],同一定界 或 CTOD(D01/08/30‖) 逻辑型(L) :用.定界。如.t.、.f.,.Y.,.N.等 说明:请注意 C、D、L 型常量的定界符。注意区分‖209‖为字符型常量,而不是数值型常量。 逻辑型常量必须用D.‖定界。注意各类型数据的宽度。 常量?编译时常量C用#DEFINE 预处理命令定义 D输入的数据非法!‖ pi 3.1415926C如:#DEFINE OPER#DEFINEC不能另作它用变量:C程序运行中,值可能会发生变化的量 C变量是内存中的一个存储单元的位置 C变量名是存储位置的符号标识 C存储位置中存放的数据在程序操作期间通过该名称来读写变量分类: C字段名变量 ?数据表中已定义的数据项 ?每一个字段可有不同的取值 C表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中 对应字段的值。 C记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量 C内存变量 ?独立于数据库之外的 变量的创建?赋值格式:?Store表达式 to 变量?变量=表达式?在赋值的同时,完成了变量的创建 STORE 3 TO nVarnVar = 3 访问变量?如字段变量和内存变量同名:C则字段变量具有更高的优先权 C此时内存变量访问?M.内存变量 ?M-&内存变量变量作用域 局部变量: ?用 LOCAL 指定局部变量 ?创建它的文件中使用与修改 ?不能在更高层与低层中引用 私有变量: ?子程序中使用 ?用 PRIVATE 指定私有变量(可以与上层同名 ) 全局变量: ?用 PUBLIC 指定全局变量(公共 ) ?任何运行的程序都能使用和修改 ?在命令窗口中创建的任何变量或数组被自动赋予全局属性 字段名变量 ?数据表中已定义的数据项 ?每一个字段可有不同的取值 C表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中 对应字段的值。 C记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量 移动记录指针 说明: ▲注意区别命令 GO TOP 和 GO 1,在索引文件打开时,前者把记录指针移到数据库的第 一条逻辑记录,而后者为把记录指针移到记录号为 1 的物理记录上 ▲若库中有记录, 执行 G0 TOP 和 GO BOTTOM 后, 函数 BOF 和 EOF 的值均为? 。 () () F? 使 BOF()为真,SKIP-1;使 EOF()为真 SKIP ▲若库中无记录,函数 BOF()和 EOF()的值均为.T.。 ▲SKIP 命令无任何选项时,表示向下移动一条记录,多用在对数据库中所有记录逐一处 理的循环结构中,在程序填空中经常出现。 移动记录指针实例?Go 1 ?Skip 2 ??编号 ?skip ?Go bottom ?? ??编号?Skip C1编号 内存变量 ?变量名: C是以汉字、字母、数字或下划线组成的字符串,串长最多为 9 个字符或 5 个汉字 C变量名必须以字母或汉字开头,下划线必须嵌在变量名中间,但不能嵌入空格符 ?内存变量分为四种类型: C数值型、字符型、逻辑型和日期型 ?变量赋值格式: C〈内存变量〉=〈表达式〉 CSTORE 〈表达式〉=〈内存变量表〉 功能:把〈表达式〉的值送到内存变量中 ?例如: ? A=20 ? B=90?数组:C名字相同、用下标区分的内存变量称为数组?主要有以下特点:C(1)数组元素的类型,由所赋的值来决定 C(2)数组变量可以不带下标使用?在赋值语句的右边,表示该数组第一个元素 ?在赋值语句的左边,表示该数组所有元素C(3)数组和数据表之间可相互转换?即数据表中数据可以转换为数组数据 ?数组数据也可以转换为数据表中的数据1.定义数组 ?数组名的取法和一般的变量名取法相同 ?定义数组命令: DIMENSION 数组名〉(&数值表达式 1&[,&数值表达式 2&]) [,&数组名&(&数值表达式 1&…] ?命令功能:定义一个或多个内存变量数组。 ?说明: C最多可有 3600 个元素,显示内存时只算一个变量 C数组下标起始值是 1 C数组元素隐含的逻辑值为D假‖ **二维数组,可用一维下标来存取。这是由于在内存中,二维数组元素是按行列次序排列 C它们每个元素都可看作单独一个内存变量使用,数组实例?DIMENSION ?? A4 ?? A(2,1) ?? A6 ?? A(2,3) ?变量:C专用b(2,3)?在程序中用 DIMENSION 建立的数组为专用C公用?命令窗口下建立的数组为公用 ?在程序中建立公用的数组用 PUBLIC 命令 ?格式为:PUBLIC〈数组名〉(&N 表达式 1&,[&N 表达式 2&]) ?例如: DIMENSIOM A(4),B(2,3) ?建立一维数组 A 和二维数组 B ?二维数组有六个元素: ?分别为 CB(1,1)、B(1,2)、B(1,3) CB(2,1)、B(2,2)、B(2,3) 数组的赋值?格式:CSTORE 〈表达式〉 TO 〈数组名〉 〈数组名〉=〈表达式〉?命令功能:C将表达式的值赋给数组变量 C上述两个命令是完全等价的 ?给数组赋值还可用 ACCEPT、INPUT、WAIT 语句数组变量的显示?命令格式: ?命令功能:LIST/DISPLAY MEMORYC显示内存变量(数组变量) C可以用 RELEASE 和 CLEAR MEMORY 命令删除掉已定义的数组(整个数组) C可以用 SAVE 命令同内存变量一起保存到磁盘内存文件(.MEM)中, 需要时用 RESTORE 命令同内存变量一起从磁盘文件中恢复 Iif() ?根据逻辑表达式的值,返回两个值中的某一个。 ?语法:IIF(lExpression, eExpression1, eExpression2) ?参数:lExpression 指定要计算的逻辑表达式。CeExpression1, eExpression2 如果 lExpression 计算结果为D真‖(.T.),返回 eExpression1;如果 lExpression 为D假‖(.F.),则返回 eExpression2。 ?返回值类型:字符型、数字型、货币型、日期型或日期时间型 ?说明 C该函数也称作 Immediate IF。它计算一个逻辑表达式的值,然后根据计算结果,返回两个 表达式中的一个。如果逻辑表达式的值为D真‖(.T.),则 IIF( ) 返回第一个表达式;如果逻辑 表达式的值为D假‖(.F.),则 IIF( ) 返回第二个表达式。 ?提示 C对于简单的条件表达式,该函数可以代替 IF ... ENDIF 语句。在按条件指定报表和标签表 达式中的字段内容时 IIF( ) 特别有用。IIF( ) 函数比等价语句 IF ... ENDIF 执行速度快得 多。 表达式 ?表达式: C是由常数、变量、函数和运算符组成的一个有物理意义的式子 C表达式总有一定的运算结果,即有一个值,所以表达式也是一种数据?表达式分为(表达式结果) :C数值表达式 C字符表达式 C关系表达式 C逻辑表达式表达式的输出命令: ?格式: C ?[[?]&表达式&,[&表达式&]] ?功能: C 计算表达式的值,并在屏幕或打印机上输出 ?例如: C? 4*6+9 C34 1.数值表达式?数值表达式:C是由算术运算符和数值型常数、变量、函数组成。 C运算结果为数值型数据。 C算术运算符为:+ - * / ^ ( )?优先次序:C括号、函数、乘方、乘除和加减,同级运算从左到右依次进行?如:C3+6/2-EXP(8)LOG(20) 2^5 2.字符表达式 ?字符表达式: C是由字符运算符和字符型常数(即用定界符括起来的字符串)、变量、函数组成 C运算结果是字符型数据 ?三种字符串运算: *完全连接运算 C格式:&〈字符串 1〉&+&〈字符串 2〉& C功能:将两个字符串连接为一个字符串。 C例如:? &THIS IS &+&A PEN& THIS IS A PEN *完全连接是指两个字符串合并,即包括空格在内的字符串中所有字符相加。 不完全连接运算 C格式:&〈字符串 1〉&-&〈字符串 2〉& C功能: ?也是将两个字符串连接为一个字符串,但是删去字符串 1 尾部的空格符 C例如: C? D首都∶***&-&北京& C首都:北京*** C注:串 1 尾部的空格移到串 1 后 包含运算?格式:C〈串 1〉$〈串 2〉?功能:C如串 1 包含在串 2 中,表达式的值为真,否则为假?例如:C&AB&$&ACBTE&结果为假(.F.) C&AB&$&ABCDE&结果为真(.T.)?注:C包含运算是字符串的关系运算 C关系运算返回的是逻辑值3.关系表达式 ?关系表达式: C是由关系运算符与字符表达式或数值表达式组成 C结果是一个逻辑值 C关系成立结果取真(.T.),不成立结果取假(.F.) C关系运算符两边的数据类型要一致,(同类型) ?关系运算符有 6 种: &=,&,=, &=,&, &&、#或!= ?注: C字符的比较是 ASCII 码值的大小 ?空格&0-9&A-Z&a-z C汉字是按机内码值比较的(拼音) ?例: C? 113&90 C? &CH&&&CA& 4.逻辑表达式 ?逻辑表达式: C是由逻辑常数、变量和函数用逻辑运算符连接而成 C条件判断满足结果为真(.T.),否则结果为假(.F.)?逻辑运算符有三种:.AND. 逻辑与(且)(两都成立才为真) .OR. 逻辑或(只要有一个成立为真) .NOT.或! 逻辑非 ***逻辑运算符的优先级别为:.NOT. .AND. .OR. 运算符的优先顺序 ?表达式中运算符的优先顺序: C由高到低依次为:算术或字符或日期运算→关系运算→逻辑运算 C相同优先级的运算按从左到右的顺序计算 例如: C性别=&男&.AND.职称=&副教授& C? (9+3)&5.and.‖ab‖$‖abcde‖表达式例: 算术表达式:结果为数值型。如 3+2 字符表达式:结果为字符型。如 ‘Good ‘+‘Morning‘ 或‘Good ‘-‘Morning‘ 日期表达式:结果为日期或数值。如 DATE()+5 、DATE()-5 或 DATE()-{00-08-20} 关系表达式:结果为逻辑型。如‖AB‖$‖ABCD‖、‖AB‖&‖BC‖ 逻辑表达式:结果为逻辑型。如 3&2 .AND. .NOT.5&6 说明: ▲在日期型表达式中,两个日期表达式相减,结果为数值,表示两日期之间相差的天数,两 日期表达式相加,属非法表达式;一个日期表达式与一个数值表达式相加,结果为日期型表 达式,表示从当前日期往后数 N 天;一个日期表达式与一数值表达式相减,表示从当前日 期向前数 N 天。 ▲逻辑表达式包含关系表达式,关系表达式中包含算术表达式。注意,关系表达式与逻辑表 达式的结果都为逻辑型。 命令格式?由两部分组成C命令动词,表示应执行的操作 C若干个短语,对操作提供某些限制性说明。?一般格式如下:命令动词 短语 aa for 性别=D男‖ 与表有关的命令 ?与表有关的命令格式: ?命令动词 [范围] FOR&条件& [FIELDS &字段名表&]C如:copy to ?命令中的 FOR、FIELDS 是关键字,用户不得随意更改。?约定:[ ]表示可选项,不选用系统的默认值 & &表示必选项 &范围&:表示对表记录操作的范围 ?ALL 表示全体记录 ?NEXT N 当前记录开始后续共计 N 个记录 ?RECORD N 特指第 N 号记录。 ?REST 从当前记录开始到表尾的所有记录 FOR〈条件〉 选择操作 FIELDS &字段名表& 投影操作 操作释例?Go 3 ?Disp all ?Go 2 ?Disp next 2 ?Go 3 ?Disp rest ?Go 3 ?Disp record 5命令书写的规则 ?命令以命令动词,与动词短语的顺序无关 ?用空格来分隔各单词短语 ?命令的最长是 254 个字符,用分行符;分行 ?命令动词和关键字可以缩写为前四个字符 C如 MODIFY STRUCTURE 可写为 MODI STRU ?不分大小写,可以混合使用 ?变量名、字段名和文件名时,应避免与命令动词和关键字同名,以免运行时发生混乱 End 6.2 数据库的操作命令??常用的操作命令 ?包括C数据库的建立 C打开 C设置 C关闭 C删除1.创建数据库 CCREATE DATABASE 命令?命令格式: CCREATEDATABASE[ 〈数据库名〉|?]?命令功能:用于创建一个数据库说明: (1)数据库名已经存在,则提示新的路径或文件名 (2)参数D?‖或无参数,弹出对话框,位置及名称 (3)数据库以.DBC 为其扩展名,以.DCT 为备注文件,索引文件则以.DCX 为扩展名 (4)该命令以独占方式创建并打开一个数据库 例如:创建一个名为 t1.dbc 的数据库,并显示有关数据库的信息 CCREATE DATABASE t1 &&创建数据库 t1 CCLEAR &&清除屏幕 CDISPLAY DATABASE &&显示数据库 t1 信息 2.打开数据库 ?用 OPEN DATABASE 命令打开已经存在的数据库?命令格式:COPENDATABASE [ 〈数据库名〉|?]?命令功能:C打开一个指定的数据库。?说明:6.2 数据库的操作命令??常用的操作命令 ?包括C数据库的建立 C打开 C设置 C关闭 C删除1.创建数据库 CCREATE DATABASE 命令?命令格式:CCREATEDATABASE [ 〈数据库名〉|?]?命令功能:用于创建一个数据库说明: (1)数据库名已经存在,则提示新的路径或文件名 (2)参数D?‖或无参数,弹出对话框,位置及名称 (3)数据库以.DBC 为其扩展名,以.DCT 为备注文件,索引文件则以.DCX 为扩展名 例如:创建一个名为 t1.dbc 的数据库,并显示有关数据库的信息 CCREATE DATABASE t1 &&创建数据库 t1 CCLEAR &&清除屏幕 CDISPLAY DATABASE &&显示数据库 t1 信息 2.打开数据库 ?用 OPEN DATABASE 命令打开已经存在的数据库?命令格式:COPENDATABASE [ 〈数据库名〉|?]?命令功能:C打开一个指定的数据库。3.设置当前数据库?SETDATABASE TO 命令?命令格式:CSETDATABASE TO [ 〈数据库名〉 ]?命令功能:C设置当前数据库。说明: (1)〈数据库名〉为当前要打开的数据库名称 (2)略名,弹出一个?显库‘对话框 例如:COPEN DATABASE t1 COPEN DATABASE t2 CDISPLAY DATABASE CSET DATABASE TO t1 CDILPLAY DATABASE CSET DATABASE TO t2 CDISPLAY DATABASE库 t1.dbc 库 t2.dbc 显示当库 t2.dbc 的信息 置 t1 为当前库 显示当库 t1 的信息 设 t2 为当库 显库 t2.dbc 的信息4.关闭数据库 命令格式: CCLOSE DATABASE [ALL] ?命令功能: C关闭数据库。 ?说明: CALL 用于关闭所有打开的数据库 C如果没有指定此参数,则将关闭当前数据库 5.删除数据库?命令格式: CDELETEDATABASE 〈数据库名〉|?[DELETETABLES] [RECYCLE]?命令功能:C删除数据库说明?要删除的数据库文件必须保证处于非使用状态 ??弹出一个D删除‖对话框 ?DELETE TABLES 删除数据库中包含的表和包含这些表的数据库 ?RECYCLE 文件放入回收站中,可恢复删除的文件 ?SET SAFETY 的值为 ON,删文件前会提示用户 ?SET SAFTY 设置为 OFF,VFP 将不做任何提示表的操作命令?包括:C创建表 C打开一个存在的表 C将一个自由表加入到 C从数据库中移去表 C显示表中信息 C关闭 C删除表1.创建表 数据库中去?命令格式:CCREATE 〈数据库表名〉?命令功能:C创建数据库表或自由表,其扩展名为.dbf C如有数据库打开,则该表是数据库表,且已加入到该数据库中 C否则,该表是自由表?例如:C新建一个表 a1,将它包含到数据库 t1 中 ?OPEN DATABASE t1 ?CREATE TABLE a12.将表加入到数据库中打开数据库 t1 创建表 a1.dbf,将其包含到数据库 t1 中?命令格式:CADD TABLE〈自由表名〉|??命令功能:C将自由表加到指定数据库中去说明:?〈自由表名〉指定要加入到一个已打开的数据库中的自由表的名称 ?不指定名称或D?‖作为参数,弹出对话框 ?表一旦加入到库中,不再是自由C可以通过 REMOVE TABLE 命令将该表从数据库中移出,使之成为新的自由表库中表的一些规定: ①必须是一个有效的.DBF 文件 ②不能与数据库中已存在的表重名 ③一个表只能属于一个数据库,不能再成为其他数据库中的表 3.将表从数据库中移出?命令格式:CREMOVE TABLE 〈数据库表名〉|?[DELETE] [RECYCLE]?命令功能:C将数据库中的数据库表移出去 C使之成为自由表或删除表说明: ?参数??‘或忽略数据库表名时,对话框 ?参数 DELETE 用于指定将表从数据库和磁盘中删除 ?RECYCLE 参数,先放回收站中,不立即删,可恢复 ?与表相连的主索引、默认值及有效性规则将被删除 ?当一个表从数据库中移出时,它将变成一个自由表 例如?建 2 个表并加入到库 t1 中,而后执行删除命令?OPEN DATABASE t1 打开数据库 ?CREATE c1 创建表 c1.dbf ?CREATE c2 创建表 c2.dbf ?CLEAR 清屏幕 ?DISPLAY DATABASE 显示当前数据库信息 ?REMOVE TABLE c2 移动数据库表 c2.dbf ?CLEAR 清屏幕 ?DISPLAY DATABASE 显示当前数据库信息 ?ADD TABLE c2 将表 c2 添加到当前库中DATABASE t1 删除数据库 t1 4.显示表的结构 命令格式: CLIST STRUCTURE [TO PRINTER]|[TO FILE 〈文件名〉 ] 命令功能:显示表的结构 ?说明: C(1)有[TO PRINTER]选项时,将屏幕显示的信息输出到打印机 C(2)有[TO FILE 〈文件名〉 ]选项时,将屏幕显示的信息输出到指定的文件 5.修改表的结构?DELETE?命令格式:CALTTABLE 〈表名〉?命令功能:C修改表的结构6.输入记录?表的结构建立,没有数据,是空表 ?命令格式:CAPPEND [BLANK]?命令功能:C从表的末尾追加记录 CBLANK,末尾追加一空记录,不出现 APPEND 输入记录窗口7.打开表?????命令格式:CUSE[ 〈表名〉 ]?命令功能:C打开一个和多个已经存在的表?说明:C[ 〈表名〉 ]用于指定需要打开表的名称 8.关闭表?命令格式:CUSE CCLOSE TABLES [ALL]?命令功能:CUSE 关闭已打开的表 CCLOSE TABLES [ALL]可以同时关闭多个表。?说明:C及时关闭,从内存上卸下表,以防止操作不当***记录指针定位?用 RECNO()函数,可测试当前记录指针 ?绝对指针定位C命令格式: ?GO [TO] TOP ?GO [TO] BOTTOM ?GO [TO] RECORD N ?GO [TO] 〈数值表达式〉 ?GO [TO] N?命令功能:C 使记录指针指向表中的指定记录说明?GO TOP ?GO BOTTOM定位第一个逻辑记录 定位最后一个逻辑记录 指针定位到表的 N 号记录?GO RECORD N?GO〈数值表达式〉定到表达式值取整后的记录 ?GON 指针定位到 N 号记录?当选用参数 N 时,GO、TO 均可省略不写2.相对指针转移? ?命令格式: [+/-〈数值表达式〉 ]CSKIP命令功能: C相对当前位置按表达式值移动若干个记录 C值为正时,指针向后移 C为负值时,指针向前移 C缺省选择项时指针向后移一个记录?说明:CGO 绝对定位,都定位到所指的记录 CSKIP 是相对定位命令, 以当前记录为中心,按给定的表达式值相对地移动若干记录记录的显示?两种格式:CLIST [ 〈范围〉[FIELDS〈字段名表〉[FOR〈条件〉[TO PRINTER ] [OFF] ] ] ] [TOFILE〈文件名〉[NOCONSOLE] ] [NOOPTIMIZE] CDISPLAY [ 〈范围〉[FIELDS〈字段名表〉[FOR〈条件〉[TO P RINTER] ] ] ] [OFF] [TO FILE〈文件名〉[NOCONSOLE] ] [NOOPTIMIZE] 说明: ?LIST=DISPLAY ALL 显示的全部记录 ?[OFF]时,不显示记录号 ?有 FOR〈条件〉显示出满足条件表达式的记录 ?[FIELDS〈字段名表〉,显示指定字段 ] ?有[ 〈范围〉,显示指定范围 ] ?[TO PRINTER] ,显示的结果送到打印机输出 ?[TO FILE〈文件名〉,结果输出到文件 ] ?[NOCONSOLE] ,不将显示结果送到主窗口和[TO PRINTER] [TO FILE 〈文件名〉 ]一 起使用 ?[NOOPTIMIZE]短语时,不使用 RUSHMORE 优化技术 差别有两点:?LIST 缺省范围是显示全体记录 ?DISPLAY 缺省当前记录 ?LIST 具有连续显示特点 ?DISPLAY 具有分页显示,满一页就停止,并提示按任一键继续显示下页内容例 6.1?将 ZGDA 表中职称是讲师的、年龄在 45 岁以下的记录显示出来,并且只列出职称三个字段姓名、 年龄、CUSE CLISTZGDA FIELDS 姓名,年龄,职称 FOR 职称=D讲师‖.AND.年龄&45【例 6.2】 C将 ZGDA 表的后 4 个记录显示出来,并且将第 1 和第 5 个记录分别显示出来【例 6.3】C将 ZGDA 表中 1995 年 1 月 1 日以后参加工作的记录显示出来【例 6.4】C将 ZGDA 表的后 4 个记录中性别是女的记录显示出来6.3 表的修改和维护? 1.EDIT 和 CHANGE 命令 格式分别是:C EDIT [ 〈范围〉 [FIELDS 〈字段名表〉 [FOR 〈条件〉 ] ] ] CCHANGE [ 〈范围〉 [FIELDS 〈字段名表〉 [FOR 〈条件〉 ] ] ]?命令功能: 进入全屏幕编辑方式,对当前打开的表的记录进行修改说明:?缺省所有的选择项,从当前记录开始进行修改 ?FIELDS〈字段名表〉 ,对列出的字段进行修改?范围和 FOR〈条件〉 ,范围内满足条件的记录进行修改 ?缺省了[ 〈范围〉 ]是指全部记录2.BROWSE 命令?命令格式:?BROWSE[FIELDS 〈字段名表〉 ]?命令功能:?该命令以窗口方式显示当前表的内容,并可以对窗口内的数据按需要进行修改?使用 EDIT 命令和 CHANGE 命令时?一行只显示一个字段 ?每屏幕只能显示一个记录?VFP 系统提供了窗口显示与修改命 ?BROWSE3.REPLACE 命令***?命令格式:CREPLACE [ 〈范围〉 〈字段 1〉 ] WITH 〈表达式 1〉 [ADDITIVE] 〈字段 2〉 [, 〈表达式 2〉 [ADDITIVE] …] [FOR 〈条件〉 ]WITH ?命令功能:C成批地、快速地修改满足给定条件的一批记录 C修改的方法是用 WITH 后面表达式的值替换 WITH 前面的字段内容说明: (1) 系统不进入全屏幕编辑方式 (2) 范围和 FOR〈条件〉 ,修改范围内满足条件的所有记录 C缺省范围,当前记录 (3)REPLACE 命令可以对备注字段的数据进行替换 C可用关键字[ADDITIVE] ,追加到备注的文本内容的尾部 C否则表达式的内容覆盖备注字段中的原有内容 (4)〈字段名〉和〈表达式〉的数据类型必须相同 C数值字段,表达式的值大于字段宽度时,四舍五入运算,或采取科学计数法 【例 6.5】?在表 DA.DBF 中,对工资小于 800 元的职工各增加 9 元?USE DA ?REPLACE ALL 工资 WITH 工资+9FOR 工资&800?USE记录的插入与删除 1.记录的插入CAPPEND命令是从表末尾增加新记录?命令格式:CINSERT[BLANK] [BEFORE]?命令功能:C在当前表中的当前记录之前或之后插入记录说明: (1)没有选择项,是在当前记录之后插入一个记录 (2)如果有[BEFORE]选择项,是在当前记录之前插入一个记录 (3)如果有[BLANK]选择项,是在当前记录之后插入一个空白记录 2.记录的删除?分两步进行:C是对欲删除的记录打删除标记?必要时,可恢复,即把D*‖去掉D*‖,称为逻辑删除 C是把带有删除标记的记录真正删除,称为永久性删除记录或称物理删除记录(1)逻辑删除记录命令?命令格式:CDELETE [ 〈范围〉 [FOR〈条件〉 ] ]?命令功能:C指定范围内满足条件的那些记录加上删除标记D*‖?说明:C若省略两个选择项,则给当前记录打删除标记D*‖ C当用命令 SET DELETE ON 在显示或有关操作时,作了删除标记的记录就不起作用,如同真正删除这些记录一样 【例 6.6】?将表 DA.DBF 的 4 号记录打上删除标记USE DA DELETE RECORD 4 LIST (2)记录恢复删除命令?命令格式:CRECALL[ 〈范围〉 [FOR〈条件〉 ] ]?命令功能:C将规定范围内的、符合条件的、已作了删除标记的记录恢复。即把删除(3)永久性删除记录命令 标记D*‖去掉?命令格式:PACK?命令功能:C将带有删除标记的记录从当前表中删除 C并重新调整表的记录号?说明:C执行 PACK 命令后,删除的记录在表中不再存在,并且不能被恢复,称永久性删除记录(4)删除表的全部记录命令 ?命令格式:ZAP?命令功能:C将已打开的表中的全部记录一次性删除?说明:C(1)执行此命令,只是删除全部记录,而表的结构仍然保留 C(2)该命令等效于执行了 DELETE ALL 命令后再执行 PACK 命令表的排序??按一定的条件在已有的表之外产生一个新的有序表 ,从而实现数据的重新组织 ?命令格式:TO 文件名 ON 〈字段名 1〉 [/A] [/C] [/D] 〈字段名 2〉 [, [/A] [/C] [/D]…] [ASCENDING|DESCENDING] [ 〈范围〉[FOR〈条件〉[FIELDS ] ] 〈字段名表〉 ] ?命令功能:对当前表中指定范围内满足条件的记录,根据关键字段按字符顺序 、数值大小 或时间顺序进行重新排列,生成一个新的表 说明: ?新生成的表,扩展名为.DBF ?不选择范围和条件时,对全部记录进行排序 ?不指定 FIELDS,新表结构全部字段组成 ?多重排序,即先对〈字段名 1〉 排序,对于记录相同的记录,再按〈字段名 2〉排序,依 此类推 ?/A 和/D 分别表示升序和降序,升序符号可以省略不写 ?/C 使排序时不分大小写字母 ?/C 可以和/A 或/D 连用,两种选择可以只用一条斜线,如/AC 或 /DC ?(6)ASCENDING 和 DESCENDING 仅对那些没有指定/A 和/D 的关键字段起作用,关键 字段默认按升序 /A 排序 【例 6.7】CSORT?将表 A1.DBF 按工资排序,排序后的表名为 GZ.DBFUSE A1 SORT ON USE GZ LIST 索引文件 工资 TO GZ?表排序的方法:C分类方法 C索引?两种索引文件类型C一种为单入口索引文件 ?其扩展名为.IDX 索引文件C复合索引文件?其扩展名为.CDX 索引文件?索引就像一本书的目录索引可使读者快速找到所需的内容一样(1)单入口索引文件?是与 FoxBASE 表索引文件相兼容的索引文件 ?一个表可以有多个这样的索引文件 ?其扩展名为.IDX 索引文件(2)复合索引文件 ?包含许多索引 ?每个索引都有一个 TAG 标志 ?复合索引文件就好像是许多单个索引的集合C1)结构复合索引文件:?这样的索引文件与相关的表同名 ?但扩展名为.CDX ?当表被打开时,索引文件也自动被打开 ?并能自动及时更新C2)独立型复合索引文件:?这样的索引文件不与相关的表同名 ?且不会随相关表的打开而自动打开2.建立索引文件?命令格式:CINDEX ON 〈索引表达式〉 TO〈.IDX 索引文件名〉|TAG〈标志名〉 [OF〈.CDX 索引文件名〉 [FOR〈条件〉 [COMPACT] ] ] [ASCENDING|DESCENDING] [UNIQUE] [ADDITIVE]?命令的功能:C对满足指定条件的记录按 〈索引表达式〉 进行索引, 形成.IDX 索引文件或.CDX 索引文件。说明: ?如有关键字 TAG,表示建立复合索引 CTAG 关键字〈标志名〉为复合索引一个索引标志 ?选择 OF.CDX 索引文件名时,可建立独立型复合索引文件 C缺省时可建立与表 同名的结构化复合索引文件 ?有 FOR 条件时,按满足条件的记录进行索引 ?[ASCENDING]任选项,排序方式是按升序 ?[DESCENDING]任选项,排 序方式是按降序 ?默认时为升序说明:?索引表达式中的字段名可以是数值型、字符型或日期型 ?表达式由多个字段组成时,必须转换成相同的数据类型C转换可使用 VAL()、STR()、CTOD()、DTOC ()函数。如果索引表达式的字段类型一致时,必须用D+‖连接。?选择[COMPACT]项时,在建立单入口索引时使用,表示可生成一个压缩的单独索引文件C复合索引文件自动采用压缩方式。?UNIQUE 项时,多记录有相同的关键字表达式值,第一个记录有效,包含在索引文件中C若未指定 UNIQUE,则所有记录均包含在索引文件中?ADDITIVE 关键字时,决定是否在建立新的索引时关闭已打开的索引文件。C选择关键字表示不关闭,否则表示关闭所有已打开的索引文件3.打开和关闭索引文件?两种命令1)用 USE 打开表和索引文件 2)用 SET INDEX 打开索引文件 1)用 USE 打开表和索引文件?命令格式:CUSE〈表文件名 〉INDEX 〈索引文件名表|?〉 [ORDER]〈数值表达式〉|〈.IDX [文件名〉 ]?命令功能:C本命令将索引文件连同表主文件一起打开 C执行此命令后,关闭当前工作2)用 SET INDEX 打开索引文件 区前使用的表及索引文件?命令格式INDEX TO [ 〈索引文件名表|?〉[ADDITIVE] ] ?命令功能: C打开表主文件后,用此命令打开已建立的索引文件 ?说明: C凡与表一同打开的多个索引文件,用 APPEND、BROWSE、EDIT 及 REP LACE 命令修改 时,均会自动地修改所有的索引文件 C结构化复合索引文件随着表的打开而打开,随着表的关闭而关闭 C对于单入口索引 文件和独立型索引文件可以用上述命令, 该命令可以一次打开一个或多个 索引文件 (2)确定主控索引CSET?命令格式:CSET ORDER TO 〈数值表达式〉|〈IDX 文件名〉|[TAG〈标志名〉[OF〈.CDX ] 索引文件名〉[ASCENDING|DESCENDING] ]?一个表可以同时打开多个索引文件 ?但是只有一个索引起作用,称之为主索引(3)关闭索引文件?命令格式:1)USE 2)SET INDEX TO 3)CLOSE INDEX?命令功能:C关闭当前工作区内已打开的索引文件。?说明:C格式 1)可以关闭表及其索引文件 C格式 2)与格式 3)功能相同,可以关闭.IDX 文件与独立型复合索引文件,但不能关闭结构化复合索引文件 【例 6.8】?有一个表 A1.DBF,按工资建立单入口的索引文件(.IDX 文件),USE A1 INDEX ON 工资 TO GZ 6 records indexed SET INDEX TO GZ LIST 4.添加记录与重新索引其文件名为 GZ.IDX。?命令格式:CREINDEX?命令功能:C重新建立已索引过的索引文件。?说明:C已有索引文件,在输入记录前,并没有打开 C需要再一次建立索引 文件 C使用该命令时,必须先打开索引文件数据检索 数据检索的命令:C顺序检索?LOCATE ?CONTINUEC索引检索?FIND ?SEEK1.查找命令 FIND ?命令格式:FIND 〈字符串〉/〈数字〉?命令功能:C从表的索引文件中查找指定字符串或与数字相匹配的记录 C找到:?将记录指针指向 ?函数 FOUND()返回逻辑真值C未找到:?指向文件尾,eof()为真 ?此时的记录号为表的最大记录号+1 ?函数 FOUND()返回逻辑假值说明:?检索值可以是字符串和数字,但不能是表达式C若使用字符型内存变量检索时,必须使用宏代换&函数,以内存变量的内容检索?字符串不用定界符C如果字符串以空格 开始,必须用定界符【例 6.9】查找字符型数据?USE ?FINDA1 INDEX 孟彬彬XM?DISPLAY ?FIND孙?DISPLAY2.检索命令 SEEK?命令格式:CSEEK〈表达式〉?命令功能:C在主控索引文件中将记录指针定位在索引关键字内容与命令中指定的表达式相匹一个记录 配的第CSEEK 能实现快速查找信息。SEEK 说明: ?当表达式为字符型数据时,必须用单引号、双引号或方括号括起来 C如果是内存变量或 数值型表达式时,不用定界符?SEEK 扩大了 FIND 的查找功能,FIND 不能查找日期型数据,而 SEEK 可以 直接查找日期索引关键字的内容 ?后接表达式: C用内存变量可直接用 SEEK 检索,不用加宏替换函数 【例 6.9】?查找字符型数据C利用前面以姓名为索引关键字的索引文件USE A1 SET INDEX TO XM SEEK &张 燕& DISPLAY 顺序查找命令(LOCATE 与 CONTINUE)?直接查找命令,不用

我要回帖

更多关于 do while语句的用法 的文章

 

随机推荐