




已阅读5页,还剩100页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
16:16,1,数据库程序设计教案,刘丽丽,2,基本内容,第一章 数据库基础 第二章 数据库与数据表 第三章 查询与视图 第四章 结构化查询语言 第五章 程序设计基础 第六章 表单 第七章 报表和标签 第八章 菜单 第九章 系统的生成,3,第一章 数据库基础,基本操作 Visual FoxPro 语言基础 变量,4,1.1 基本操作,1 系统的启动 从程序菜单启动; 在资源管理器中双击VFP6.EXE文件; 桌面上双击VFP6.EXE文件; 在运行对话框中运行VFP6.EXE程序。 2 系统主窗口 标题栏、菜单栏、工具栏、编辑区、命令窗口、状态栏。 3 系统环境的配置 菜单方式:工具选项对话框; 命令方式:SET 命令。 例:set clock on; 4 系统退出 键盘操作: 按Alt+F4组合键(关闭当前窗口);Ctrl+Alt+Del组合键-选择VF程序-单击结束任务; 命令窗口中执行“quit”命令 鼠标操作: 文件-退出; 单击窗口右端“”按钮; 双击窗口左端的Vf图标;单击窗口标题栏左端的图标-单击“关闭”选项。,5,1.2 Visual FoxPro 语言基础,1. 数据类型 字符型C:用定界符双引号、单引号、或方括号定界。(例:X1= “abide” , X1=abide, X1= abide ) 数值型N:描述数量的数据类型,可进行运算,例: x2=50.678 浮点型F: 与数值型数据完全等价,只是在存储形式上采取浮点格式。 双精度型D:是更高精度的数值型数据,只用于数据表中字段类型的定义,采用固定长度浮点格式存储。 整型I:不包含小数点部分的数值型数据。 日期型D:表示日期的数据,8位,mm/dd/yyyy: 默认格式 例:a=2005-03-21 日期时间型T: mm/dd/yyyy hh:mm:ss 例:b=2007-03-26 05:28:14 逻辑型L:.T. /.F. 备注型M:存放较长的字符型数据类型。 通用型G:存储OLE对象。 注:显示变量的数据类型type( 变量),数据类型 表达式 基本命令 文件类型,6,2. 表达式 1)数值表达式 数值操作符按优先顺序依次为: 括号:();乘方:*或 ;乘:*; 除:/ ;模运算:% ;加:+ ;减:- 2)字符表达式 :连接两个字符型数据; - :连接两个字符型数据,并把第一个字符型数据的尾部空格移到第二个字符型数据后面; $ :测试第二个字符串是否包含第一个字符串。 3)日期表达式 :一个日期加上天数; - :一个日期减去天数或两个日期相减。 4)关系表达式 小于: ;等于(第一个字符串是否包含第二个字符串): :不等于:,#,!= ; 小于等于:= ;字符串精确等于:= = 5)逻辑表达式 与:AND;或:OR;非:NOT,数据类型 表达式 基本命令 文件类型,7,3. 基本命令 1)设置默认路径(拷贝) 格式:SET DEFAULT TO 路径 注:无路径选项,取消默认路径的设置 2)显示 格式:?|? AT 列数 FONT “字体名” ,字号 STYLE “风格符” 注:?:先换行再输出结果;?:不换行就输出结果。 例: ? “清华大学出版社” FONT “隶书”,40 STYLE “B” 3)赋值命令 格式1: STORE TO 格式2: 内存变量名= 例:STORE 10 TO X1,X2,X3 NAME=“张力” 注:赋值时定义变量类型。 4)显示内存变量 格式:DISPLAY | LIST MEMORY LIKE 通配字符 TO PRINTER PROMPT | TO FILE 文件名 5)清除 格式:CLEAR ALL | WINDOWS | EVENTS 注:不含任何选项,清除主窗口;ALL:释放所有内存变量、数组及自定义菜单和窗口,关闭所有的表及相关索引、格式、备注文件,不释放系统内存变量,自动选择1工作区为当前工作区;MEMORY:释放所有内存变量、数组,不释放系统内存变量;WINDOWS:释放所有自定义窗口;EVENTS:终止由 READ EVENTS 启动的事件处理状态。,数据类型 表达式 基本命令 文件类型,8,4)文件类型,数据类型 表达式 基本命令 文件类型,9,4)文件类型,数据类型 表达式 基本命令 文件类型,10,1.3 变量,常量:操作过程中值保持不变。 变量:操作过程中值可以变化(内存变量、数组变量、字段变量、系统变量) 1.内存变量(store、:赋值的变量) 显示:DISPLAY | LIST MEMORY LIKE 通配符 TO PRINTERPROMPT | TO FILE 文件名 释放1(释放所有内存变量):clear all 释放2(释放指定内存变量): release | all like | except 2. 数组变量 定义:declare 数组名1(m1 ,n1),数组名2(m2 ,n2) 注:定义数组后,系统自动为每一个数组赋初值.F.;为整个数组赋同一个值,可赋给数组名;为单个元素赋值,需指定下标。 3. 字段变量 4. 系统变量:VF本身内建,不用定义,11,第二章 数据库和数据表,数据库与数据表 项目文件的操作 数据表的基本操作 数据库表的属性设置 数据表的维护 设置数据表的索引 数据表的关联 多表操作,12,2.1 数据库与数据表,1. 自由表(.DBF :游离在数据库之外的表)的创建: 菜单:文件-新建-表-新建文件-命名保存-设计; 字段名:不超过10个字符(5个汉字) 输入、插入、删除、改变位置、索引(索引文件不可以脱离表,可以随表的打开而打开,并随表的关闭而关闭)、Null(空值,允许该字段的值为空, ctrl+0输入NULL值)。 命令:CREATE 向导:文件-新建-表-向导。 3. 数据表(.DBF:保存在数据库中的表)的建立 注:需先建立数据库文件;字段名:不超过128个字符 操作: 数据库菜单; 数据库工具栏; 鼠标右键 注:自由表与数据表的转换,自由表 数据库 数据表,13,2. 数据库(.DBC:用来组织和管理数据表和视图) 1)创建 菜单:文件-新建-数据库-新建文件-命名保存-设计; 命令方式:CREATE DATABASE 文件名|? 2)打开: 菜单:所有文件都可以通过菜单“文件-打开”命令打开。 命令:OPEN DATABASE 文件名|? EXCLUSIVE | SHARED NOUPDATE 注:EXCLUSIVE(独占方式打开)| SHARED(共享方式打开) NOUPDATE:只读方式打开。 3)删除:DELETE DATABASE DELETETABLES RECYCLE 注:DELETETABLES:删除数据库的同时删除其中的表、视图等。 RECYCLE:把删除的文件放入回收站中。,自由表 数据库 数据表,14,2.2 项目文件的操作,1. 创建(.PJX) 菜单方式:新建-项目-新建文件/向导 命令方式: 格式1: MODIFY PROJECT 格式2: CREATE PROJECT 注:MODIFY命令也可以打开已有的项目文件 2. 打开(鼠标方式):文件-打开 3. 关闭 鼠标方式: 文件-关闭; 单击窗口右上角“关闭”按钮; 单击窗口左上角控制图标;标题栏右击鼠标-关闭。 命令方式: 格式:CLOSE ALL DATABASE | PROCEDURE | TABLES 注:该命令可关闭所有工作区中打开的数据库、数据表和索引文件等,并选定1工作区,但不关闭由SET PRINT命令打开的文件,及命令窗口、调试窗口、帮助和追踪窗口。 4. 选项卡的操作(P31):选定、折叠、展开、拆分、移动、放大、缩小、形成工具栏。 5. 添加数据库、数据表,15,作业,建立一个文件名为“student”的项目文件,此项目中包括一个文件名为“学生管理”的数据库文件,在“学生管理”数据库中包含四个数据表,分别是:基本情况表、学习成绩表、个人表现表、社会关系表,这些表的结构与记录见06级数学系VF课本P42中图36所示。,16,2.3 数据表的基本操作,1. 数据表的打开与关闭 格式:use 数据表名 in 工作区 exclusive shared alias 别名 注:不带任何选项,关闭当前工作区中数据表; 2. 浏览与编辑: 菜单方式:打开数据表显示/浏览; 命令方式:打开数据表 browse (browse last) 注:拖动分隔符,成两窗口,浏览/编辑。 记录的显示:display fieldlist scope for 条件1 while 条件2 off to printer | to file 文件名 scope:all 、next n、record n、 rest off:不显示记录号 display all = list 3. 追加数据记录 追加一条记录:打开数据表browse 表/追加新记录; 连续追加:打开数据表browse 显示/追加方式(或 单击下面的空行) 成组追加:表/追加记录(APPEND FROM 表名);,打开关闭、浏览编辑、追加记录、记录指针的定位记录的逻辑、物理删除及恢复 记录编辑修改,字段值的替换 记录的筛选,select():选择工作区 recno():求当前记录号,17,4. 记录指针的定位 鼠标定位:移动鼠标单击; 菜单定位:表转到记录; 命令定位: 指针绝对移动命令:go/goto 指针相对移动命令:skip 数值表达式 (注:skip = skip +1) 5. 记录的逻辑删除:只作删除标记,不真正删除。 鼠标操作:单击浏览窗口的第二列 注:工具选项数据(选中 “忽略已删除记录”) set delete on :系统不再显示和处理逻辑删除的记录。 set delete off :系统显示和处理逻辑删除的记录。 菜单方式:表删除记录 注:for : 所有满足条件的记录; while : 从当前记录开始所有满足条件的记录,遇到不满足条件的记录停止。 命令:delete for while 注:scope-all, next n , rest , record n .,打开关闭、浏览编辑、追加记录、记录指针的定位记录的逻辑、物理删除及恢复 记录编辑修改,字段值的替换 记录的筛选,18,6. 记录的物理删除:从数据表中彻底删除。 菜单方式:表彻底删除 (删除所有带删除标记的记录) 命令方式:1) PACK:删除所有带删除标记的记录 2) ZAP:删除当前表中的所有记录(不论是否有删除标记) 7. 记录的恢复(RECALL):恢复做逻辑删除的记录 。 请参照“记录的逻辑删除自学” 8. 记录的编辑修改 一般记录:单击字段内容修改; 备注型:双击鼠标添加修改; 通用型:双击鼠标编辑菜单/插入对象。 9. 字段值的替换 菜单方式:表替换字段 命令方式:replace with additive with additive for while 注:若替换备注型字段值,“additive”可使替换值追加在原值后面,否则新值替换原值。,打开关闭、浏览编辑、追加记录、记录指针的定位记录的逻辑、物理删除及恢复 记录编辑修改,字段值的替换 记录的筛选,19,10. 记录的筛选:选择出符合条件的记录 菜单操作:表属性 命令操作 格式1:set filter to 注:设置记录的筛选,不带任何选项取消筛选; 格式2:set fields to , 注:设置字段的筛选,set fields to all 取消筛选; 格式3:set fields on | off :打开或关闭字段的筛选(默认关闭)。,打开关闭、浏览编辑、追加记录、记录指针的定位记录的逻辑、物理删除及恢复 记录编辑修改,字段值的替换 记录的筛选,20,记录级别的属性(表设计器表):在一条记录的各字段之间进行限制 表名属性:可另起一个长表名,当表出现在项目与数据库、查询、视图等设计器窗口时,可显示该长表名,便于对数据表内容的了解; 记录有效性属性: 规则:是一个关系或逻辑表达式,已经存在的或以后要输入记录必须符合此表达式; 信息:输入的记录不满足此表达式时的提示信息。 触发器属性 删除触发器:控制删除操作,表达式结果为.t.,可删除;为.F.,不可删除,出现提示信息; 插入触发器:控制插入操作,表达式结果为.t.,可插入;为.F.,不可插入,出现提示信息; 更新控制:控制编辑修改操作,表达式结果为.t.,可修改;为.F.,不可修改,出现提示信息;,2.4 数据库表的属性设置-记录级别的属性,21,2.5 数据表的维护,修改数据表结构 菜单:打开数据表显示/表设计器; 命令:打开数据表modify structure 数据表结构的复制(只复制结构没有记录) 命令:copy structure to fields with cdx with cdx:为新表建立与原表相同的结构复合索引文件。 数据表的复制(既有结构又有记录) 命令: copy to fields with cdx for while ,22,2.6 设置数据表的索引,排序:使原数据表中的记录按升序(或降序)全部重新排列,并生产一个新的数据表文件。 索引:以升序(或降序)的方式改变原数据表中记录的显示顺序,并生成索引文件,不可脱离原数据表。(可以为一个数据表建立多个不同的索引文件) 1)索引关键字的类型 主索引(关键字段的内容不可重复,数据表,一数一主索引):唯一确定数据表中记录的排列顺序。 候选索引(关键字段的内容不可重复,数据表|自由表,一表多候选索引):唯一确定数据表中记录的排列顺序。 普通索引(关键字段的内容可重复,数据表|自由表,默认) 唯一索引(关键字段的内容可重复,重复只保留第一条,和低版本兼容),索引简述 索引的操作,23,1) 创建索引文件 创建简单索引 创建复杂索引 2) 打开:随着数据表的打开而打开 3) 关闭:随着数据表文件的关闭,所有索引文件自动关闭。 4) 确定主控索引:数据表记录以某个索引进行排序,则这个索引就称为该数据表的主控索引。 只打开一个索引,则此索引为主控索引; 一个接一个打开,最后打开的索引为主控索引; 一次打开多个索引,排在最前面的为主控索引; 注:索引文件打开后,其中的索引标识(Tag)不起作用,数据表记录顺序保持原始顺序,必须执行确定主控索引的操作后,数据表记录的排列顺序才会跟着变化。 命令方式1:set order to TAG ASCENDING | DESENDING 命令方式2:USE ORDER TAG ASCENDING | DESENDING 菜单方式:表属性索引顺序 5) 删除索引: 菜单方式:表设计器索引; 命令方式:DELETE TAG ALL | , ;,在“表设计器”里创建,索引简述 索引的操作,24,2.7 数据表的关联,1) 数据表之间联系的分类 一对一(1:1)联系:当前表中的一条记录可以唯一对应另一个表中的一条记录; 一对多(1:n)联系:当前表中的一条记录可以对应另一个表中的多条记录; 多对多(m:n)联系:当前表中的多条记录可以对应另一个表中的多条记录。 注:在数据表之间可以建立“永久关联”和“临时关联”两种连接。 永久关联:被保存在数据库中的数据表间的联系,随数据库长期保存,随数据库的打开而打开,关闭而关闭。 临时关联:使用时临时建立的表间联系,数据表关闭则临时关联消失。 父表:创建数据表之间的关联时,当前所使用的数据表; 子表:创建数据表之间的关联时,被关联的表。 创建关联的必要条件:1)两个要建立关联的数据表中存在同类字段;2)每个数据表事先要以该“同类字段”建立了索引。,关联简述 关联操作 临时关联,25,1 )建立表间的一对一关联 注:两个表都具有同一类属性的字段;父表和子表分别以该字段作过主索引或候选索引。 操作:在数据库设计器中建立。 2)建立表间的一对多关联 注:父表作主索引,子表作普通索引。 操作:在数据库设计器中建立。 3)调整或删除关联 删除关联:选中关联线按Del键(或右键/删除关系) 编辑关联:选中关联线右键/编辑关系(或数据库/编辑关系) 4)建立数据表间的参照完整性 操作1:选中关联线右键编辑关系/参照完整性; 操作2:选中关联线右键编辑参照完整性; 操作3:数据库菜单编辑参照完整性。,关联简述 关联的操作 临时关联,26,临时关联:可在数据表之间建立,也可在自由表之间建立 注:父表已作主索引(或候选索引),子表已作普通索引。 操作: 菜单方式:打开数据工作期选定父表单击“关系”选定子表及关联字段选定父表关联字段 注:(1)浏览父表的记录,会自动关联子表的相应记录; (2)关闭“数据工作期”窗口不会影响两个表的关联; (3)关闭数据表后,关联自动消失。 命令方式: set relation to into | 注:(1)缺省选项取消当前的临时关联; (2) 是主(当前)表的连接索引关键字; (3)用 | 指定连接(子)表。 (4)父表为当前表,两表都设置了主控索引,关联简述 关联的操作 临时关联,27,2.8 多表操作,VF允许最多同时打开32 767 个数据表,每次操作只能选中其中一个。 1. 工作区 解释:工作区是一个编号区域,指内存中的一块存储区域,用区号和别名来标识。 区号:1(或0)32 767 ;区名:AJ (10);后面:w11w32767 命令:select 注:每个工作区只能打开一个数据表,系统启动后,默认一号工作区为当前工作区。 别名:某个工作区中数据表文件的别名 2. 数据表别名: 系统在内存中引用和识别数据表的标识。每当数据表打开时,系统要求必须为数据表指定一个唯一的别名。数据表的别名是临时性的,关闭数据表时会自动释放。下次打开数据表时,可为它指定完全不同的另一个别名。 格式:use alias 注:省略选项,系统以原文件名作为别名。,工作区、别名 数据工作期、多表操作,28,数据工作期: 是一个独立的工作状态和操作环境,包含了自己的一组工作区及打开的数据表、索引及表间的关联,并为表单、报表等提供了动态的操作环境。 打开:窗口/数据工作期 (set view on); 关闭:文件/关闭 (set view off); 多表的打开与关闭 利用数据工作期 use in 区号| 区名 一个数据表在多个工作区打开 利用数据工作区 命令:use alias again,工作区、别名 数据工作期、多表操作,29,第三章 查询与视图,查询文件 视图操作,30,3.1 查询文件,用查询设计器创建查询(.QPR):用设计器创建查询,原理也是使用SQLSelect创建查询,但只能实现相对简单的查询,没有Select语句功能强大。 打开查询设计器的方法: 文件新建/查询/新建文件; 项目管理器:数据查询新建; 查询文件的创建: 创建单表查询: 操作:打开查询设计器添加一个表; 创建多表查询: 操作:打开查询设计器添加多个表 运行查询文件 项目管理器:选定查询文件运行按钮; 查询设计器中:查询菜单运行查询; 查询设计器中:工具栏运行按钮; 查询设计器中:CtrlQ快捷键; 查询设计器中:右击鼠标运行查询; 程序菜单运行; 命令窗口:DO 查询文件名.qpr(必须写扩展名)。,创建与运行 查询设计器选项卡 查询输出方式,31,查询设计器的选项卡 1)字段卡:选定字段、字段表达式(对字段做运算后输出); 2)联接卡:设置联接类型及联接条件; 3)筛选卡:选取符合条件的记录; 4)排序依据卡:对记录进行排序; 5)分组依据卡:对同一字段值的内容进行统计; 6)杂项卡:设置显示的记录数等。 查询输出方式: 1)浏览:browse浏览窗口; 2)临时表:一旦退出系统,临时表消失; 查看内容:查询菜单运行查询显示菜单浏览。 3)表:数据表; 查看内容:同上。,创建与运行 查询设计器选项卡 查询输出方式,32,创建与运行 查询设计器选项卡 查询输出方式,4)图形:Excel图形; 如不可用,则执行命令:_GENGRAPH=C:Program FilesMicrosoft Visual StudioVfp98WizardsWZGRAPH.APP 查看内容:运行查询。 5)屏幕: 只屏幕;屏幕、打印机;屏幕、文本文件。 屏幕之间暂停:记录很多时,满一屏暂停,任意键继续,Esc键终止。 6)报表:报表格式文件 页面预览:可在预览窗口观察输出结果; 活动控件台:可将查询结果送到当前活动窗口;报告之前释放页:在打印输出前,先空走一页纸。 查看内容:查询菜单运行查询; 7)标签:标签格式文件 查看内容:查询菜单运行查询;,33,3.2 视图操作,视图(只能保存在数据库中):本地视图、远程视图(可更新表)。 单表视图:由一个数据表生成,一般只包含数据表的部分字段。 注:视图是依托数据库而存在,创建视图应首先打开相应的数据库。 1)用视图设计器创建 文件新建 /视图/新建文件; 数据库新建本地视图; 项目管理器中选定“本地视图”新建。 2)用视图向导创建:在“新建本地视图”窗口中选择“视图向导”。 3)用命令创建 格式:CREATE SQL VIEW AS SELECT 字段列表FROM WHERE 注:忽略下划线中的选项,将打开视图设计器。 浏览视图中的内容:select * from 视图文件名,创建单表视图 创建多表视图,34,多表视图:由两个以上数据表或视图建立的新视图。 1)使用设计器创建 用创建单表视图的方法打开“视图设计器”。 2)使用命令创建 同“创建单表视图”的命令格式,显示字段如相同需用文件名加以标识。 查看视图程序(需先打开视图设计器) 查询查看SQL选项; 快捷菜单“查看SQL选项”; 视图设计器工具栏查看SQL选项 视图设计器祥解 更新:钥匙设置关键字段(如希望视图中数据的修改影响到源表,必须设定);铅笔设置可更新字段(只在视图中);发送SQL:使更新影响到源表;SQL WHERE:多用户操作环境:使用更新:SQL delete然后insert删除后插入,SQL update:直接修改。,创建单表视图 创建多表视图,35,第四章 结构化查询语言(),SQL既可在数据库中使用,也可在C,FORTRAN等高级语言中使用。 SQL命令动词: 数据查询:SELECT () 数据定义:CREATE, DROP, ALTER 数据操纵:INSERT, UPDATE, DELETE 数据控制:GRANT, REVOKE,36,1、基本格式:select ALL | DISTINCT 别名. as 列名 | * from 数据库名! 知识点:DISTINCT:结果不包含完全相同的记录; * :代表所有字段。 在字段表达式中可以出现集函数,如: sum(字段), avg(字段), count(字段), min(字段), max(字段) 例1:select 学习成绩.高数+学习成绩.哲学 as 总分,高数,哲学 from 学习成绩 2、 select where 例2:select 女生总分:,sum(体育),人数:,count(*) from 学习成绩,; 基本情况 where 学习成绩.学号=基本情况.学号 and 基本情况.性别=女 知识点: and , or, not; 字段 between 值1 and 值2; 字段 not between 值1 and 值2; 字段 in (值1,值2,); 字段 not in (值1,值2,); 字段 like 通配符 (:任意字符串,_:任何一个字符) 字段 is NULL (字段值是空值),基本查询 联接查询 嵌套查询 合并查询,4.1 SQL查询,37,3、排序:selectorder by 字段asc | desc, TOP PERCENT 注:TOP PERCENT应和order by联用。 例:select * from 学习成绩 order by 学号 top 3 4、分组:selectgroup by 分组字段 having 注: having 应和group by联用,如未和其联用,则和where的功能相同。 例:select 社会关系.学号,qsrs:,count(*) from 社会关系; having 学号 ADDITIVE :某个文本文件 注: ADDITIVE 将查询结果追加到文本文件后面。 into cursor :只读临时数据表文件 into dbf | table :数据表文件 into array :二维数组,基本查询 联接查询 嵌套查询 合并查询,38,联接查询: selectfrom 表1 inner join 表2 on 1)两个表之间的连接 内部连接:只包含满足条件的记录; 格式:selectfrom 表1 inner join 表2 on 等价于:select from 表1, 表2 where 右连接:包含满足条件的记录,右端表全部记录; 格式:selectfrom 表1 right outer join 表2 on 注:outer可以不用,强调是一个外连接。 左连接:包含满足条件的记录,左端表全部记录; 格式:selectfrom 表1 left outer join 表2 on 完全连接:包含满足条件的记录,左右表中所有记录 格式:selectfrom 表1 full outer join 表2 on 2) 单表自身连接 格式:selectfrom 表 别名1, 表 别名2 where 例:select xxcj1.高数,xxcj2.哲学 ; from 学习成绩 xxcj1,学习成绩 xxcj2; where xxcj1.学号=xxcj2.学号 and xxcj1.高数xxcj2.哲学,right | left | full,基本查询 联接查询 嵌套查询 合并查询,39,嵌套查询 格式:selectfromwhere ( selectfromwhere ) 比较符:=(左边是否包含右边)、(!=, #)、=、=、= =(完全相等) in:父字段值在子字段值里 any:以子表达式最小值决定主表达式结果; all:以子表达式最大值决定主表达式结果; not exists:以子表达式值作为主表达式的条件 例:select * from 基本情况 where exists (select * from 学习成绩 where 学号=基本情况.学号) 合并查询(格式:select union select ) 例:select * from 个人表现 where 学号=9901101 union select * from 个人表现 where 学号=9901103 注:两个表的输出字段的类型和宽度必须一致。,父查询 子查询 如增加排序控制,则只能放在最外层结构,基本查询 联接查询 嵌套查询 合并查询,40,1、表的定义 格式:create table | dbf free ( ( ,) , ) null not null check(字段有效性规则) error “错误信息” default 字段初值 primary key unique , check (表的有效性规则) error “错误信息” 说明: free:表示所创建的表是自由表,不添加到数据库中。如数据库没打开,所创建的表也是自由表。 null | not null:表示允许或不允许该字段为空值。 check (字段有效性规则) error “错误信息” :指定字段的有效性规则,当增加一条空白记录时,就进行有效性检查。 error “错误信息”:指定字段有效性检查出现错误时的错误提示信息。 default 字段初值:当增加一条空白记录时,指定字段的默认值。 primary key:指定该字段为主索引字段,索引标识名称与字段名称相同。 unique:创建与字段同名的候选索引标识。 check (表的有效性规则) error “错误信息”:指定表的有效性规则,C(字符), D(日期),T(日期时间),N(数),F(浮数), I(整数),B(双精度),Y(货币),L(逻辑),M(备注),G(通用),P(图片),只适于数据表,基本表 视图,4.2 SQL数据定义,41,2、表的删除 格式:drop table 3、表的修改 格式:alter table add | alter column ( ,) null not null check(字段有效性规则) error “错误信息” default 字段初值 primary key unique 说明: add:增加一个字段。 alter:修改字段。 column:无意义,起提示作用。 4、视图的定义 格式:create view as select 语句 5、视图的删除 格式:drop view ,基本表 视图,42,插入数据 格式1:insert into ( ,) value ( ,) 说明:把表达式的值插入到指定的字段值中。 格式2: insert into from array | memvar 说明:把数组或内存变量的值插入到记录中。 更新数据 格式:update 库名! set = , where 删除数据 格式:delete from where ,插入数据 更新数据 删除数据,4.3 SQL数据操纵,43,第五章 程序设计基础,程序设计方法 面向过程方法(DOS):通过程序命令流来完成所有工作。 面向对象方法(Windows):通过系统提供的对象模型来完成大部分工作。 程序设计概述 结构控制语句 多模块程序 程序的调试,44,5.1 程序设计概述,创建 菜单方式:文件新建程序新建文件; 命令方式:modify command 程序文件名 注:省略“程序文件名”,则默认“程序1”为文件名 编辑修改 菜单方式:文件打开; 命令方式:modify command 程序文件名 注:保存快捷键:CtrlW;放弃存盘:Esc键或CtrlQ键 程序的运行 菜单方式:程序运行; 命令方式:DO ; 编辑中执行:工具栏“!”按钮,程序的创建、编辑修改及运行 简单输入/输出命令,45,简单输入/输出命令 格式:INPUT 提示信息 to 功能:等待用户从键盘输入数据,回车键结束输入,输入的值赋给内存变量,字符串须加定界符。 格式:ACCEPT 提示信息 to 功能:等待用户从键盘输入字符串,回车键结束输入,不须定界符。 格式:WAIT 提示信息 to 内存变量 WINDOW AT nRow, nColumn TIMEOUT nSeconds:以窗口的形式显示指定信息。 内存变量:用于保存用户键入的字符,类型为字符型。若用户按的是Enter键或单击鼠标,则保存的是空串。,程序的创建、编辑修改及运行 简单输入/输出命令,46,5.2 结构控制语句,三种基本程序结构:顺序、分支、循环 顺序结构: 例1:在屏幕上显示由*组成的菱形( sequence.prg) 分支结构 1、条件语句(最多允许384层嵌套) 语句格式 if else endif 例2:在基本情况表中查找某个学生,如找到则显示该学生的姓名,性别,否则显示“查无此人!”(find_if.prg) 注:locate:顺序查找表中满足指定条件的第一条记录。 格式:locate for 条件 eof():指示数据表文件尾;found():查找结果,顺序结构 分支结构 循环结构,47,2、多分支选择结构(最多允许384层嵌套) 语句格式 DO CASE CASE CASE CASE OTHERWISE ENDCASE 例3:打开成绩表,统计学生的数学成绩是属于哪个层次(优:10090;良:8980;中:7970;及格:6960;不及格:=60,顺序结构 分支结构 循环结构,48,1、基本循环结构(最多允许384层嵌套) 语句格式 do while loop exit enddo 注: loop:使程序无条件的调回到do while语句,重新判断条件; exit:使程序无条件的跳出循环体,接着执行enddo后面的语句. 例4:在学习成绩表中查找某人记录(find_dowhil.prg),顺序结构 分支结构 循环结构,49,2、计数循环结构 语句格式: for = to step loop exit endfor | next 例5:计算1到100的和(分别用do while语句和for语句实现:for.prg;dowhile2.prg),顺序结构 分支结构 循环结构,50,3、扫描(指针型)循环结构 语句格式 scan | for | while loop exit endscan 作用:按表文件记录的顺序在指定范围内从头到尾扫描每一条记录,每扫描一次就执行一次循环体语句,直到全部扫描完跳出endscan语句。,顺序结构 分支结构 循环结构,51,5.3 多模块程序,结构化程序设计的原则:结构化、模块化。 定义过程 格式: PROCEDURE (参数表) *如有参数,则第一行命令应是参数接收命令 return 注:如过程和主程序不在同一程序文件中,此语句可不写;如过程和主程序在同一程序文件中,此语句必须写;如过程在过程库中,此语句也必须写 调用过程 格式:DO WITH 作用:在当前程序中调用一个文件,定义过程 调用过程 内存变量的作用区域 参数接收 过程库 自定义函数,52,例: *计算m!n!,子程序n! clear public s1,s2,s input “请给变量m赋值(m0):m“ to m input “请给变量n赋值(n0):n“ to n do 3_30PP with m s1=s ?s1 do 3_30P with n s2=s ?s2 s=s1+s2 ?s return,procedure 3_30PP m1 ;写不写都可parameters m1 s=m1 do while m11 s=s*(m1-1) m1=m1-1 enddo return s,53,由于程序分为主程序和子程序等不同层次,所以各级程序中使用的变量也有不同的级别和不同的作用范围。 1、公共(Public)变量 注:在各级程序段中都可以使用,直到程序运行结束才被释放。必须先用命令定义以后才能使用。 格式:public 注:在命令窗口中,直接用赋值语句定义的变量也认为是公共变量。 2、私有(Private)变量 注:只在定义该类变量的子程序及其下级程序中起作用,一旦返回上级程序便自动释放。 格式:private 注:在程序中不加定义而使用的变量也认为是私有变量。 3、局部(Local)变量 注: 只在定义它的子程序中使用,进入上级或下级程序时,都自动释放; 也必须先用命令定义以后才能使用;如果当前局部变量与上级程序中的变量同名,则隐含原变量,直到返回上级程序时释放当前私有变量,恢复原隐含变量。 格式:local 注:所有定义好的变量(公共、私有、局部)都被自动赋值予逻辑初值 .F.,定义过程 调用过程 内存变量的作用区域 参数接收 过程库 自定义函数,54,参数接收 格式1:PARAMETERS 格式2:LPRARMETERS 作用: 中的参数是一组内存变量或数组,它们与过程调用命令中参数一一对应,按顺序分别接收调用命令中对应参数中的值。系统最多可以有27个参数,各参数之间用“,”分隔。 注: 中的变量名不一定和调用命令中中变量名相同,但参数数量应当不多于调用命令中参数的数量。 格式1创建私有变量,格式2创建局部变量。 例:输出学生档案表中性别为男生或女生的记录。( mainP1, moduleP1) 过程库:包含很多个过程的程序文件 注:如要调用一个过程库中的过程,程序必须首先用以下命令打开过程库 set procedure to ,定义过程 调用过程 内存变量的作用区域 参数接收 过程库 自定义函数,55,定义函数 格式: FUNCTION *如有参数,则第一行命令应是参数接收命令 *parameters 参数列表 return 调用函数 变量函数名(参数列表),定义过程 调用过程 内存变量的作用区域 参数接收 过程库 自定义函数,56,5.4 面向过程程序的调试,程序错误的分类:1)语法错误:程序设计结构或命令语法有错误;2)系统错误:由计算机软、硬件引起的错误,例VF本身的缺陷或病毒感染等;3)逻辑错误:不违反系统规则,但却不合逻辑或不合题意的错误。这类错误系统不能自检出来,由程序员自己借助调试器来检查。 打开调试器 菜单方式:工具调试器 命令方式:debug 调试器的构成和使用 1.跟踪窗口:显示正在调试执行的程序文件 :指向调试中正在执行的代码行; :表示断点,程序执行到该代码行时,中断程序执行。 2.监视窗口:指定表达式在程序调试执行过程中的取值变化情况 指定表达式:在监视窗口编辑,Enter确认。 3.局部窗口:显示模块程序中的内存变量的名称、当前取值及类型。 4.调用堆栈窗口:显示当前处于执行状态的程序、过程或方法程序。 5.调试输出窗口:可在模块程序中安置一些DebugOut命令,当程序执行到此命令后,会计算出表达式的值,并把结果送入调试输出窗口。 命令格式:DebugOut 注:为区别于DEBUG命令,DebugOut至少要写出6个字母。,调试器环境 设置断点 调试菜单,57,设置断点:工具断点 调试菜单介绍: 1、取消:终止程序的调试执行,并关闭程序。 2、定位修改:终止程序的调试执行,再在文本编辑窗口打开调试程序 3、跳出:连续执行被调用程序中的代码,再在调用程序的调用语句的下一行处中断。 4、单步:单步执行下一行代码。如下一行代码调用了过程或者方法程序,则此过程或者方法程序在后台执行。 5、单步跟踪:单步执行下一行代码。 6、调速:设置两行代码之间的延迟秒数。 7、设置下一行语句:使光标所在行称为断点恢复后要执行的语句。,调试器环境 设置断点 调试菜单,58,第六章 表单,表单的建立与修改 面向对象程序设计基础 子类的设计与使用 表单控件使用1(学习成绩表单) 表单控件使用2(基本情况表单) 系统登录表单的设计,59,6.1 表单的建立与修改,用“表单向导”建立表单(.SCX): 方法:表单新建表单向导 例:建立一个“一对多”的社会关系表 运行表单:单击“运行”按钮;表单执行表单 用“表单设计器设计”设计表单: 方法:表单新建新建表单鼠标右键“数据环境” 例:建立“基本情况”表单 附: LABEL标签: 属性:Caption, FontName, FontSize, ForeColor 给表单添加向导控件: “表单控件”工具栏“查看类”Visual FoxPro98WIZARDSWIZBTNS.VCX“txtbtns”按钮 TAB:,用“表单向导”建立表单 用“表单设计器设计”设计表单,60,6.2 面向对象程序设计基础,1、对象(Object) 现实世界中可以独立存在的,能够被区分的一切实体都是对象。 在VF中常用的对象有:表单集(FormSet)、表单(Form)和控件(Control)等。 2、类(Class) 具有共同属性、共同操作性质的对象的集合。 例:自然界中昆虫是类,而瓢虫、蝗虫等就是对象,实例。 VF为用户提供了29个基类,分为:容器类和控件类。 注:所有对象都是从类中产生,都是某个类的实例; 容器类对象可以容纳其他对象,并允许访问其中的对象。如:表单是一个对象,但可以把按钮、编辑框、文本框等放在其中。 控件类对象不可以容纳其它对象。如:文本框对象中不可以在放其它对象。 3、属性(Attribute) 属性是对象的特征,是对象外观及行为的表现。 4、事件(Event) 事件是对象可以识别和响应的行为与操作。如:单击,双击鼠标。 5、方法(Method) 方法是和对象紧密相连的,对象所具有的功能就是他的方法 注:一般说每个事件都有自己相对应的方法。,基本概念和术语 类的特点 对象的引用,61,类的特点 1)封装性:将对象的特性(属性)和行为(方法)包装在一起,类的内部信息对用户是隐蔽的。 2)继承性:子类可以继承父类的所有属性(继承),并且可以有与父类不同的属性(可扩展性)。 3)多态性:同一个类可以有多个事件 对象的引用 绝对引用: thisformset:表示当前表单集 thisform:表示当前表单 相对引用: this:表示当前对象 parent:表示当前对象的上一层容器对象,基本概念和术语 类的特点 对象的引用,62,6.3 子类的设计与使用,创建: 菜单方式:文件新建/类新建文件 项目管理器:类库新建 命令方式:create class 修改:打开类设计器 使用:工具栏查看类 例:创建一个操作表的命令按钮组类,并在表单中使用。 属性:Caption, ButtonCount, 事件:c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 面试题思考要点及答案
- 药物创新的市场导向试题及答案
- 八年级地理试卷及答案解析
- 安溪初一生物试卷及答案
- s版小学语文四年试卷及答案
- 航空用无缝钢管企业ESG实践与创新战略研究报告
- 矿产资源勘查企业数字化转型与智慧升级战略研究报告
- 固定手动扳手及扳钳企业县域市场拓展与下沉战略研究报告
- 三醋酸纤维素企业数字化转型与智慧升级战略研究报告
- 电梯门及控制系统企业ESG实践与创新战略研究报告
- 抖音火花合同电子版获取教程
- 湖北省武汉市东湖高新区2023-2024学年五年级下学期期中英语试题
- 完整版带式输送机传动系统设计说明书(单级圆柱齿轮减速器+链传动)
- 第5课《弘扬劳动精神劳模精神工匠精神》第1框《理解劳动精神劳模精神工匠精神》-【中职专用】《职业道德与法治》同步课堂课件
- 《天文学上的旷世之争》 统编版高中语文选择性必修下册
- 山西省晋中市介休市2023-2024学年下学期期中测试七年级历史试卷
- JJG 365-2008电化学氧测定仪
- 期中模拟测试卷(试卷)-2023-2024学年一年级下册数学人教版
- 2024年青海省电力交易员竞赛选拔考试题库(含答案)
- (高清版)TDT 1067-2021 不动产登记数据整合建库技术规范
- 民宿服务培训课件
评论
0/150
提交评论