740 likes | 872 Views
第九章数据库管理系统 Visual FoxPro 6.0. 第一节 数据库概述. 一、数据库的基本概念 1、数据管理技术的发展 人工管理阶段 (1953年~1965年 ) 文件系统阶段 (1965年~1970年) 数据库系统阶段(1970年~至今). 2、 数据库系统基本概念 数据库: 按一定的数据结构组织方式存贮在一起的相互有关的数据集合。 数据管理: 对数据的收集、整理、组织、存储、查询、维护和传送等数据处理工作。 数据库管理系统( DBMS)
E N D
第九章数据库管理系统 Visual FoxPro 6.0
第一节 数据库概述 • 一、数据库的基本概念 • 1、数据管理技术的发展 • 人工管理阶段 (1953年~1965年) • 文件系统阶段 (1965年~1970年) • 数据库系统阶段(1970年~至今)
2、数据库系统基本概念 • 数据库:按一定的数据结构组织方式存贮在一起的相互有关的数据集合。 • 数据管理:对数据的收集、整理、组织、存储、查询、维护和传送等数据处理工作。 • 数据库管理系统(DBMS) • DBMS(Data Base Management System )是用户与数据库的接口,提供了控制和管理数据库的命令。 • 数据库系统 • 由数据库、数据库管理系统和数据库应用系统构成的数据处理系统
B A A D B C D C E F G H 网状模型 层次模型 • 3、数据模型 • 层次模型 • 网状模型 • 关系模型
系 父结点 教研室1 教研室2 教研室3 根结点 教师1 教师3 教师4 子结点 教师2 层次数据模型示例
部门 A 部门B 部门C 雇员 1 雇员2 雇员3 雇员4 雇员5 项目2 项目 1 网状数据模型示例
关系数据库 基本术语:字段、字段名、记录、数据项、关系、表、数据库文件。 (以一张住院病人情况登记表为例来说明关系数据库)
关系型数据库的一些性质 每一列代表一个字段,不允许有重复的字段名,每列字段只属于同一数据类型。 不允许有相同的记录 行和列的顺序可以任意
第二节 FoxPro 基本知识 一、 FoxPro的特性 具有良好的兼容性 运行速度快 具有多种运行方式 用户界面非常友好 开发工具完善 提供了跨平台支持
二、FoxPro的安装、启动和退出 • Microsoft Visual FoxPro 6.0的安装、启动和退出 • 安装 用安装光盘进行安装,执行SETUP.EXE文件 • 启动 “开始”“程序” “Microsoft Visual FoxPro 6.0” • 退出 “文件” “退出” 或<ALT>+<F4> 在命令窗口中,可键入QUIT命令退出。
三、FoxPro的工作界面 • 菜单栏 • 工具栏 • 显示工具栏的方法:点击“显示”菜单“工具栏” • 对话框 • 设计器 • 生成器 • 向导 • 窗口 • 项目管理器
第三节 FoxPro基本元素 一、数据类型(有11种) 1、数值型(N型) 2、字符型(C型) 3、日期型(D型) 4、通用型(G型) 5、逻辑型(L型) 6、备注型(M型) 7、浮点型(F型) 8、日期时间型(T型) 9、货币型(Y型) 10、双精度型(B型) 11、整数型(I型)
二、常量 常量:在程序运行过程中值保持不变的量, FoxPro中有六种类型的常量: 1、字符型常量(C型) 由单引号、双引号或方括号括起的可显示字符构成的字符串。 例如:“abc” , “李平” , [中华人民共和国] 注:a. 定界符一定要匹配。如:“刘力‘,[abc” 等是非法的字符串。 b. 字符串中含有定界符时,要用另一种定界符定义。 例如:“ABC“123”de”[ABC“123”de] c. 定界符一定要用半角字符方式。
2、数值型常量(N型) 例如:-35,356,68.56 3、逻辑型常量(L型) 定界符是一对小圆点,值只有两个: 真:·T · 、· t · 、· Y · 、 · y · 假:·F · 、· f · 、· N · 、 · n · 4、日期型常量(D型) 输入格式:{^yyyy/mm/dd} 输出格式:mm/dd/yy 5、日期时间型 输入格式:{^yyyy/mm/dd hh:mm:ss} 输出格式:mm/dd/yy hh:mm:ss am/pm 6、货币型 用符号$来标识,如$568.68
字段变量 存在于库文件中 变量 系统内存变量 内存变量 使用之前先定义、赋初值 用户定义的内存变量 字符、数值、逻辑、日期、屏幕型 三、变量 在程序运行过程中其值可以发生变化的量。 注意:当字段变量与内存变量同名时,字段变量被优先引用,要用内存变量时需要在变量名前加上M->变量名或M.变量名来区别。
变量名命名规则 以字母或汉字开头 由字母、汉字、数字、下划线组成 长度不大于10个字符 不可以出现空格 例如: x=23<30 , x的值为.T. , L型 姓名=‘张建树’,姓名的变量值为C型 y={^2002/06/16} , y的值为06/16/02,D型 z=4^2 , z的值为16,N型
四、函数 FoxPro系统为用户提供了几百种函数,同时允许用户自定义函数,函数的一般形式为: 函数名(参数1,…,参数2) 1、数值运算函数: EXP(N)表示 e 的N次方 INT(N)表示取整函数,取N的整数部分 例:INT(3.68)=3 INT(-5.78)=-5 ROUND(N1, N2 )表示四舍五入函数 例如:ROUND( 153.568, 2 )的函数值为153.57 MOD(N1,N2)表示求模, 当N1,N2>0时,模为余数;当N1和N2中有一负数时,模为余数与N2的和;当N1,N2<0时,模为余数求反。 COL( )值为当前光标位置的列号 ROW( )值为当前光标位置的行号
2、字符处理函数 LEN(C )值为字符型( C型)表达式的长度 SUBSTR(C ,N1, N2 )取子串函数 例如:SUBSTR( “内蒙古医学院”, 7, 6 )的值为医学院 LEFT(C,N)表示从C的左边开始取N个字符 RIGHT(C,N)表示从C的右边开始取N个字符 SPACE(N)表示返回长度为N的空格串 UPPER(C)表示将C中所有的字母转换成大写字母 LOWER(C)表示将C中所有的字母转换成小写字母 AT( C1, C2,N )值为C1在C2中的位置序数 例如:AT(“ABC”, “XYZABC”)的值为4 AT(“人民”, “中华人民共和国”)的值为5
3、日期与时间函数 • YEAR( D ) 、MONTH( D )和DAY( D) 分别为D型表达式中的日, 年 和月份, 其中YEAR( D )的值为4位 • 例如:?day({^2002-03-28})的值为28 • DATE() 表示返回当前系统日期 • TIME() 表示返回当前系统时间 • DATETIME()表示返回当前系统日期与时间 • DTOS(D)表示以YYYYMMDD格式返回D值 • CMONTH(D)表示以英文单词形式返回D中的月份
4、类型转换函数 • DTOC(D)将D型表达式转换为C型 • CTOD( C )将C型表达式转换为D型 • STR(N1,N2,N3)将N1转换为字符类型值 其中:N1为待转换的数值,N2为字符串的长度,N3为小数位数 • VAL(C)将字符类型数据转换为数值类型数据 • ASC( C )返回字符串中最左边的字符的ASCII码值 • CHR( N )返回以N为ASCII码值的字符,N为0-255 • &<C型变量> 表示宏代换函数
5、测试函数 • RECNO( )表示返回当前记录号 • SELECT()表示返回当前工作区的区号 • BOF( )测试记录指针是否指在库文件的开始位置,若是值为.T. ,否则值为.F. • EOF( ) 测试记录指针是否指在库文件的结束位置,若是值为.T. ,否则值为.F. • DELETED ( ) 测试当前记录是否有删除标志,若有值为.T. ,否则值为.F. • FOUND ( )根据查询命令是否找到符合条件的记录,如果找到,值为.T. ,否则值为.F.
五、运算符 • 算术运算符 • +、-、*、/、 **或^、%(取模),( ) • 例如:234+567,50%3,45*(123+678)/3 • 注:运算对象和结果均为数值型数据。 • 运算顺序:^ * . / . % + .- 同一级别从左向右。有括号先括号内,括号嵌套,先内后外
关系运算符 • <、>、=、<=、>=、 <>或#或!= (不等于)、= =(恒等于)、$(包含) • 注:对两个数据或表达式比较,结果成立时值为.T.,否则值为.F. • 比较规则:数值大小、日期先后、字符按ASCII、汉字内码 • “==”表示精确相等。 • 符号“$”用来比较两个字符串,例如:C1$C2,若C1包含在C2中即C1是C2的子串,则值为.T.,否则为.F. • 例如:“AB” $ “EFABCD” 的值为T • 优先级相同,按从左向右,括号内优先的运算顺序。
字符运算符 • + 字符串直接连接运算符 • - 尾部空格移位连接运算符 • 例如:“ABC ”+“XYZ”=“ABC XYZ” • “ABC ”-“XYZ”=“ABCXYZ ” • 注:运算对象和结果均为字符型数据。 • 逻辑运算符 • .AND.(逻辑与) .OR.(逻辑或) .NOT.或!(逻辑非) • 与运算:A . AND . B • A、B均为.T.时结果为.T.,否则为.F. • 或运算:A . OR . B • A、B均为.F.时结果为.F.,否则为.T. • 非运算:. NOT . A 或!A • 当A为.T.时,值为.F. ,当A为.F.时,值为.T. • 三者的运算优先次序是:逻辑非>逻辑与>逻辑或
当表达式中包含了所有运算符时, 运算符的优先顺序是: 数值运算符>字符串运算符 >关系运算符 >逻辑运算符
六、表达式 (一)表达式的计算与显示 格式1:?< 表达式 > 格式2:?? < 表达式 > 例如:?56+78 134 ? 56>78 .OR. .NOT. ( 89=56) . T . ?? ‘ABC’ + ‘XYZ’ ABCXYZ
七、内存变量与数组 (一)内存变量 1、内存变量的赋值命令: 格式1:<内存变量>=<表达式> 功能:先计算表达式的值,再将该值赋给赋值号左边的“内存变量”,内存变量的类型取决于表达式的类型。 例如:X=24,X的值为N型 NAME=“刘丽”,NAME的值为C型 婚否=.T. ,婚否的值为L型 出生年月={^1966/08/16},值为D型
赋值命令格式2: STORE <表达式> TO <变量名表> 功能:先计算表达式的值,再将该值赋给<变量名表> ,变量的类型取决于表达式的类型。 STORE 2<3 TO x , x的值为.T. ,L型 STORE ‘张建树’TO 姓名,姓名的值为C型 STORE {^2002/08/28} TO y , y的值为08/28/02,D型 STORE 3 TO A1,A2,A3 A1,A2和A3的值 都为3,N型
2、显示内存变量命令: 格式:list|display memory [like <变量名通配符>] [to print][to file<文件名>] 功能:显示当前内存变量名、属性、类型和当前值 注: 通配符是指*和?,*表示任意个任意字符 ?表示一个任意字符 [to print]将显示内容送往打印机。 [to file<文件名>]将显示内容以文本形式保存 在磁盘文件中。 如:a=35 AB=“人民” list memo like a* 屏幕显示为: a pub n 35 ABpub C 人民
3、释放内存变量命令: 格式1:CLEAR MEMORY 功能:删除内存中全部用户定义的内存变量。 格式2:RELEASE [<内存变量名表>] 功能:删除全部或<内存变量名表>中指定的内存变量 格式3:RELEASE ALL[LIKE/EXCEPT<通配项>] 功能:若省略可选项,删除全部内存变量. like表示删除符合要求的内存变量。 except表示删除不符合要求的内存变量。 例如:RELEASE ALL LIKE A* RELEASE ALL EXCEPT B*
4、保存内存变量文件: 格式:SAVE TO <内存变量文件名> [ALL LIKE /EXCEPT <内存变量通配符>] 功能:将当前内存中的全部或部分内存变量,以指定<内存变量文件名>保存在磁盘上。 注: <内存变量文件名>默认的扩展名为.mem。 如:save to c:\myfile\ncbl.mem all like a* 功能:将当前内存中以a开头的所有内存变量保存在c:盘myfile文件夹下的ncbl.mem文件中。 5、恢复内存变量: 格式:RESTORE FROM <内存变量文件名> 功能:从指定的内存变量文件中恢复内存变量到内存 如:restore from c:\myfile\ncbl.mem 表示将c:盘myfile文件夹下的内存变量文件 ncbl.mem中的内容恢复到内存。
(二)数组 数组:按一定顺序排列的一组内存变量。数组中的各个变量称为数组元素。数组元素用数组名以及该元素在数组中排列位置的下标一起表示。数组的维数:数组元素中下标的个数。 注:FOXPRO中只有一、二维数组。使用数组要先定义。 1、数组的定义: 格式: DIMENSION <数组名> (下标1,下标2) , … 功能:定义一维或二维数组名,以及有关数组 各下标的上界值,下限默认为1。 一个数组的元素个数最多为3600个。 每个数组元素的初始值为.F. 例如:DIMENSION X(3), A(2,3), B(5) 分别定义了一维数组X,B和二维数组A 其中X有三个元素,A有2*3个元素, B有五个元素
2、数组的赋值: 1、数组中各元素的取值类型可以不同,同一元素的取值前后也可不同,初值均为.F. 例如:DIME A(2) A(1)= .T. A(2) = ‘ ABC’ ?A(1), A(2) A(1)= .T. A(2) = ‘ABC’ 2、用赋值命令可为数组元素赋值,也可为整个数组的各个元素赋以相同的值。 例如: DIME A(2) A=5 ?A(1),A(2) 5 5
第四节 数据库和表的建立与基本操作 建立和修改数据库表结构 输入、显示、编辑、修改和删除记录内容 库文件的打开和关闭 记录指针的定位 库文件的排序与索引 数据查询和统计 多重数据库文件操作 其它操作命令
数据库表的组成 表结构 表记录
一、建立和修改数据库表结构 • 1 、库结构的组成 • 字段名 • 字段类型 • 字段宽度 • 小数位数 2、表结构的建立 命令方式:CREATE <文件名> 菜单方式:用表向导建立表 方法:“文件”菜单“新建”“表”“新建文件”“创建”对话框中输入表文件名“确定” 打开“表设计器”对话框
字段名: • 由字母、汉字、数字或下划线组成 • 数据库表支持长字段名,长度最多可达128个字符 • 自由表的字段名长度最多为10个字符 字段宽度 • 系统自动设置: • 逻辑型: 1 • 日期型: 8 • 日期时间型: 8 • 整型: 4 • 货币型: 8 • 备注型: 4 • 通用型: 4 • 用户自己定义 • 字符型: 0~254 • 数值型: 20 • 浮动型: 20 • 双精度型: 8
例如:建立库文件STUDENT.DBF CREATE STUDENT 如果在E盘上建立文件,则键入命令: CREATE E:STUDENT 3、修改表结构 命令格式:MODIFY STRUCTURE 菜单方式:“显示”菜单“表设计器”
4、创建数据库后再创建表的方法 步骤一: “文件”菜单“新建”“数据库”“新建文件” “创建”对话框中输入库文件名“确定” 打开“数据库设计器”对话框 注:创建的数据库文件的扩展名为.DBC 命令方式: CREATEDATABASE <数据库名> 步骤二: “数据库”菜单“新建表” 注:数据库表的字段名最多可达128字符。
有关自由表和数据库表的转换: • ( 1) 当前数据库添加表 • 命令方式: • ADDTABLE 表文件名 • 菜单方式: “数据库”菜单“添加表” • ( 2 ) 从当前数据库中移出表,使之成为自由表 • 命令方式: • DELETETABLE 表文件名 • 菜单方式: “数据库”菜单“移去”
命令的一般格式 <命令词>[范围][选择][投影][其它参数] 注:命令词说明操作的内容如显示、复制、删除 选择参数是对记录的限制。 投影参数是对字段的选择。 其它参数,如to print,to file<文件名>等 例如:显示当前记录以后的所有性别为女的记录 的姓名,性别,年龄,婚否 list rest for 性别=“女”fields姓名, 性别,年龄,婚否
命令的书写规则 (1)命令动词与子句、子句与子句、子句内各部分之间必须用空格隔开,但各子句的次序允许任意排列。 (2)命令动词与各子句中的保留字,包括以后将介绍的函数名都可以简写为前4个字符,而且对其中出现的英文字母,使用大小写等效。 (3)一条命令的长度可达8192个字符,若一行写不下,可在适当位置键入续行符“;”并回车,然后在下一行继续键入该命令。
选择 用来限定记录操作的范围和条件,从而筛选出该范围内满足条件的记录。 选择参数:FOR<L表达式>或 WHILE< L表达式> 注:FOR选择所有满足条件的记录,默认范围all遇到不满足条件的,跳过该记录继续查找。而WHILE从当前记录开始遇到第一个不满足条件的就结束。 <范围> all 全部记录 next <n> 从当前记录开始向后共n条记录 rest 从当前记录开始一直到最后 record <n> 第n条记录
二、输入、显示、编辑、修改和删除记录内容 (一) 输入记录内容 1、追加记录 格式:APPEND [ BLANK ] 2、插入记录 格式:INSERT [ BEFORE ] [ BLANK ] (二)显示记录 1、显示库结构 格式:LIST STRUCTURE 或 DISPLAY STRUCTURE 2、显示记录内容 格式:LIST/ DISPLAY [ < 范围> ] [ FIELDS< 字段名表>] [ FOR / WHILE < 条件表达式> ] [ OFF ] [ TO PRINT ]
下面分别讲述显示记录内容的几种情况 1、显示全部记录 LIST 或 DISPLAY ALL 例:LIST 2、显示当前记录 DISP 例:GO 5 DISPLAY 3、有范围、有选择地显示记录内容
例1:显示前3条记录中性别为男的记录 GO TOP LIST NEXT 3 FOR 性别=“男” 例2:显示所有科室是外科的住院病人记录 中的姓名,入住日期和费用 LIST ALL FOR 科室=“外科”FIELDS 姓名,入住日期,费用 例3:显示所有入住日期在99年以前的记录 LIST ALL FOR 入住日期<{^1999-01-01} LIST ALL FOR YEAR(入住日期)<1999 例4:显示第三条记录的治疗情况 GO 3 DISPLAY 治疗情况 例5:显示已婚的记录内容 LIST ALL FOR 婚否=.T. 或:LIST ALL FOR 婚否 例6:显示未婚男性的记录 LIST ALL .NOT.婚否 .AND. 性别=‘男’
(三) 表的打开和关闭 • 1、打开数据库文件有两种方式: 命令方式:use <库文件名> [in <n>][alias <别名>] • 注:如在当前目录下,库文件不用标识 • n表示工作区号 • alias <别名>省略此项以原库名为别名 菜单方式:“文件”菜单“打开” 2、关闭表 • Use • 功能:关闭工作区n中打开的数据库文件和索引文件 • close all • 功能:关闭所有工作区中的所有文件,不释放内存变量 • close databases • 功能:关闭所有数据库文件,索引文件和格式文件。 • quit • 功能:退出FoxPro系统
(四) 编辑和修改记录 1.编辑修改命令 格式:EDIT/CHANGE [<范围>][FIELDS< 字段名表>] [ FOR/WHILE<条件>] 例:EDIT 3 2. 浏览修改命令 格式:BROWSE [<范围>] [FIELDS< 字段名表> ] [FOR/WHILE<条件>][FREEZE <字段名>] [NOAPPEND][FONT <字体>,<字体大小>] 例:对费用超过500元的记录作一些修改 BROWSE ALL FOR 费用>500 NOAPPEND FONT ‘黑体’,24
3. 快速修改命令 格式:REPLACE[<范围>][ FOR/WHILE<条件>] < 字段名1> WITH <表达式1> … < 字段名n> WITH <表达式n> 例1:把所有记录的费用一项都增加100元 REPLACE ALL 费用 WITH 费用+100 例2:给库文件ZYBR.DBF增加一个‘余额’字段,余额的值为预付减去费用值 REPLACE ALL 余额 WITH 预付-费用 4.编辑通用字段内容 格式:APPEND GENERAL <G型字段> FROM <文件名>
(五) 删除记录 1.给记录加删除标记 格式:DELETE [<范围>] [FOR/WHILE<条件表达式>] 记录是否加上删除标记可用DELETE()测试 SET DELETE ON/OFF 控制删除标记是否有效 SET DELETE ON 命令表示删除标记有效 SET DELETE OFF命令表示删除标记无效 例:给所有的男性记录加删除标记 DELETE ALL FOR 性别=‘男’