南天内部资料,严谨出售
RECALL ALL 恢复当前所有作删除标记的记录。
[例]: 恢复当前所有记录中学号的前两位为”02”的记录
RECALL ALL FOR LEFT(XH,2)=”02”
? 对带有删除标记记录的访问 SET DELETED ON |OFF ON忽略,OFF访问 [注]: 除非是彻底删除,否则在统计记录的条数时,带删除标记的记录仍包含在内。
[例]: SET FILETER TO XB=”女” 恢复 SET FILTER TO
[注]: 与字段的筛选区分 SET FIELD TO 字段名 [例]:set field to xh,xm,xb [注]: set field to不能恢复
(11)记录的浏览命令 (考点)
BROWSE [FIELDS字段列表][FOR 条件][RREEZE 字段名][NOAPPEND];
[NODELETE][NOMODIFY][TITLE 表达式]
说明:
? FIELDS 用于指定在浏览窗口中出现的字段,FOR 用于筛选记录,FREEZE 用于指定可以修改
的字段。NOAPPEND 指定不可追加记录,NODELETE 指定不可删除记录,NOMODIFY 指定不可修改记录,但可追加或删除记录,TITLE 指定浏览窗口的标题,缺省时为表名。 ? 这里用到了“;”分号,用于换行,上下两行是同一条命令。(考点) ? 浏览表记录的两条命令:
? BROWSE [FIELDS字段列表][FOR 条件][RREEZE 字段名][NOAPPEND];
[NODELETE][NOMODIFY][TITLE 表达式] ? SELECT-SQL
例如:browse fields xh,xm,xb for xb=”男”
select xh,xm from xs where xb=”男”
(12)数据的复制命令(考点)
copy to 文件名 [fields字段列表] [范围] [for 条件]
[[type] sdf | xls | delimted [with delimiter | with blank |
with tab | with character delimter]]
将当前工作区中的表的记录复制到指定的文件中,目的文件类型:DBF表文件、TXT文本文件、XLS电子表格文件。 [例]:use xs
copy to xs01 for xb=‘女’ &&&& 文件名:xs01.dbf copy to xs01 fields xh,xm sdf &&&& 文件名:xs01.txt copy to xs01 xls &&&& 文件名:xs01.xls (13)数据的统计命令
? count [范围] [for 条件] [to 变量名] &&& 统计个数
? sum [表达式] [范围] [for 条件] [to 变量名] &&& 求和,其中表达式是数值型的 ? Averge [表达式] [范围] [for 条件] [to 变量名] &&& 求平均值,其中表达式是数值型的 10. 表的索引
21
(9)记录的筛选命令 SET FILTER TO 条件表达式(考点)
(10)字段的筛选命令 set field to 字段列表
? 记录顺序:
? 物理顺序:录入记录的原始顺序,表中记录的存储顺序称为物理顺序,记录号表示了记录的
物理顺序。
? 逻辑顺序:表打开后被使用时记录的处理顺序称为逻辑顺序。
? 索引标识:为了区分一张表的不同索引,每一个索引都有一个索引名,即索引标识。
? 索引关键字:又称为“索引表达式”,它排序的依据。由一个字段或多个字段组成的表达式,当有
多个字段时,字符型直接用,如果类型不同,则通过函数变化,转换成相同类型,通常化成字符型。不能基于备注字段和通用字段建立索引。(考点) 例:
【单个字段】按ylbx(养老保险)创建一个普通索引,标识名为ylbx,要求按ylbx降序排序 【字符+数字】为gz表创建一个候选索引ghsfgz,要求按gh字段排序,gh相同再按sfgz排序 索引标识为:ghsfgz 表达式为 gh +Str(sfgz) sfgz为数值型
【字符+字符】为xs表创建普通索引xdhzydh,要求按xdh排序,xdh相同再按zydh排序 索引标识为:xdhzydh 表达式为 xdh + zydh 为什么不要加STR? 【字符+日期】为xs表创建普通索引xdhcsrq,要求按xdh排序,xdh相同再按csrq排序 索引标识为:xdhcsrq 表达式为 xdh + Dtoc(csrq,1) 为什么要用 ,1 【首字母+数值】为gz表创建普通索引ghsfgz,要求按gh排序,gh相同再按sfgz排序 索引标识为:ghsfgz 表达式为 Left(gh,1)+STR(sfgz)
【数值+数值】已知cj表中有两门课程成绩cj1和cj2,创建索引先按cj1排序,再按cj2排序 表达式为 STR(cj1)+ STR(cj2)
【数值+数值型】已知cj表中有两门课程成绩cj1和cj2,创建索引按总成绩排序
表达式为 cj1 + cj2
【其他】创建一个普通索引recsort,按物理记录顺序的倒序排序,即记录号为1的记录排最后。
表达式为 recno( ) 排序:降序
? 索引类型:主索引(数据库表特有),候选索引,普通索引,唯一索引
前两种索引用于约束表中记录的唯一性,唯一索引用于控制索引结果的唯一性,它不允许两个具有相同索引值的记录包含在同一个唯一索引中,但它并不要求表中的记录具有唯一性。 ? 索引文件种类:(考点)
? 结构复合索引文件(.CDX):文件名同表名,自动与表同步打开,关闭,更新。 ? 非结构复合索引文件(.CDX):文件名不同于表名,不会自动打开。 ? 独立索引文件(.IDX):文件名用户定,不会自动打开。 ? 主索引与主控索引
? 主索引是索引的一种类型。
? 主控索引是在某一时刻对表的显示或访问顺序起作用的索引,可以把复合索引中的住索引或其它类型的索引或独立索引设置为主控索引。 ? 与索引相关的一些命令
? 创建:INDEX ON 索引表达式 TAG 索引名 [[FOR 条件表达式];
[ASCENDING|DESCENDING] [UNIQUE| CANDIDATE]]
ASCENDING 表示索引排序是升序,DESCENDING 表示索引排序是降序,省略时表示升序。UNIQUE 表示唯一索引,CANDIDATE 表示候选索引,省略时表示普通索引。 [例]: INDEX ON XH TAG XH1
22
南天内部资料,严谨出售
? 删除:DELETE TAG 索引名1 [,索引名2] 或 DELETE TAG ALL ? 设置主控索引:
? 打开表的同时设置 USE XS ORDER XH ? 打开表后再设置 (考点)
SET ORDER TO [索引名][IN 区号|别名] [ASCENDING | DESCENDING] [例]:在工作区3中设置学生表中的学号为主控索引并将序排列
USE XS
SET ORDER TO XH IN 3 DESCENDING
? 索引快速定位记录的命令
SEEK 表达式 [ORDER 索引名 [ASCENDING | DESCENDING]]
注:只能在具有索引的表中使用,且只能基于索引关键字进行搜索。
第四章 数据库的创建和使用
1.数据库的创建命令
CREATE DATABASE [数据库名 | ?] 2. 数据库的组成 (1)数据库表
数据库表是从属于某一个数据库的表。数据库表与数据库之间的相关性是通过表文件(.dbf)与库文件(.dbc)之间的链接实现的。双链接包括前链和后链。 链接 前链 后链 (2)视图 (3)连接
(4)存储过程:即保存在数据库中的过程代码,由用户自定义函数或创建表与表之间的参照完整性规
则时系统创建的函数组成。设置存储过程的操作方法:选择“存储过程”,点击“新建”或“修改”按钮,在代码窗口中输入过程或函数代码,注意:一定要有过程或函数的开头和结尾。输入完成后,在存储过程的列表中将出现新输入的过程或函数名。
3. 数据库的打开命令:open database [库名] [exclusive | shared][noupdate][validate]
注:数据库与表不同,没有工作区的概念,可以同时打开多个数据库。(考点) 4. 设置当前数据库 多次打开数据库时,最后打开的一个数据库就是当前数据库。
方法:
? “常用”工具栏的“数据库”下拉列表选择当前数据库。 ? 命令:SET DATABASE TO 数据库名。 5. 关闭数据库
? “项目管理器”的“关闭”按钮
? close database 命令(关闭当前数据库) 6. 删除数据库
23
保存位置 .dbc数据库中 .dbf表头文件中 保存内容 表文件的路径和文件名 数据库文件的路径和文件名 在windows窗口或用delete file命令删除的数据库,不能删除链接信息。而使用“项目管理器”中的“移去”进行删除,则可删除链接信息,使库表变成自由表。 7. 数据库表
(1)创建:(操作略),如数据库已被打开,则使用creat table-sql创建表,如不用free,则该表不是自由表。 例如:
open database sjk
creat table xs1(xh c(6),xm c(8)) &&&& 数据库表 creat table xs2 free(xh c(6),xm c(8)) &&&& 自由表 (2)数据库表的字段的扩展属性和表扩展属性(略,参看上机知识点) (3)数据库表的添加与移去
? 数据库表的添加:添加表就是使自由表成为数据库表,本质上是建立表与数据库之间的双向链接。 操作:“项目管理器”—数据库—表—添加 “数据库设计器”—添加表
命令:add table 表名 [name 长表名]
? 数据库表的移去:移去表就是使数据库表成为自由表,本质是删除数据库表与数据库之间的双向链接。当数据库表变成自由表时,数据库表的字段扩展属性和表扩展属性将丢失(即无效),数据库表的主索引将自动变成侯选索引,其它的不变。(考点) 操作:“项目管理器”—数据库—表—移去 “数据库设计器”—移去表
命令:remove table 表名 [delete] (其中delete表示从磁盘中删除表) free table 表名
说明:如果数据库被删除,则库表的这些信息将丢失,此时需用FREE TABLE命令把表转换成自由表才可用。(考点)
8. 有关数据库及数据库表的几点说明 ? 数据库表与自由表有区别
? 打开或说明非当前数据库中的表,用“!” ? 在移动数据库文件的存储位置时,需考虑双向链接 ? 在移去数据库表时,其中的字段、表扩展属性等会丢失 ? 多次修改数据库、数据库表结构之后,应清理数据库 9. 表之间的联系
表之间的关系主要有三种:一对一,一对多,多对多。理解好“表之间的关系主要要掌握好主关键字和外部关键字”,如果两张表都具有相同的主关键字,则认为它们具有“一对一”关系,如果一张表的主关键字存在于另一张表中称为“外部关键字”,则认为它们具有“一对多”关系。 (1)一对一关系
设A、B两张表,A表中的一个记录在B表中只有一个记录与之对应,B表中的一个记录在A表中也只有一个记录与之对应。在很多情况下,两张表可以简单地合并成一个表。 (2)一对多关系
如A表中的任意一个记录在B表中可有多个记录与之对应,而B表中的每个记录,在A表中仅有一个记录与之对应,则称两表之间存在一对多关系。A为主表,B为子表。 (3)多对多关系
24
南天内部资料,严谨出售
若A表的一个记录在B表中可对应多个记录,而B表中的一个记录在A表中也对应多个记录,则称为多对多关系。
遇到多对多关系时,必须建立第三张表,把多对多关系分解成两个一对多关系。第三张表就称作“纽带表”。把两张表的主关键字都放在这个纽带表中。对于纽带表,除了包含两个外部关键字外,还可以有其他字段。纽带表的主关键字可以由两个外部关键字组成。 10. 参照完整性
是用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则。
1)参照完整性的一般要求(一对多)v 子表的每一个记录在对应的父表中有一个父记录。 ? 在父表中修改记录时,如改了主关键字的值,则子表中相关记录的外部关键字值必须同时改。 ? 在子表中插入记录时,其外部关键字必须是主表主关键字值中的一个。 ? 在父表中删除记录,与该记录相关的子表中的记录必须全部删除。 2)完整性规则:包括更新、删除、插入(考点) ? 更新规则:级联、限制、忽略(对主表而言)
? 更新级联:当修改主表的关键字的值时,若子表有相应的记录,则同步修改子表的记录。 ? 更新限制:当修改主表的关键字的值时,若子表有相应的记录,则禁止对主表记录的修改。 ? 更新忽略:当修改主表的关键字的值时,不管子表有无相应的记录,只更新主表。 ? 删除规则:级联、限制、忽略(对主表而言)同更新规则 ? 插入规则:限制、忽略(对子表而言)
? 插入限制:当向子表中插入一个新记录或更新一个已经存在的记录时,若主表中不存在匹配的
关键字值,禁止插入。
? 插入忽略:当向子表中插入一个新记录或更新一个已经存在的记录时,不管主表,允许插入。 3)在利用“参照完整性生成器”对话框设置参照完整性规则时,系统会自动地生成完成改规则的程序代码。规则的代码被保存在数据库的存储过程中,而规则的实施由主表和子表的触发器完成。(考点) 4)完整性包括:实体完整性、参照完整性和用户自定义完整性。 ? 实体完整性包括两级:(通过对应的有效性规则实现)
? 字段的数据完整性:输入到字段的数据的类型或值必须符合某个特定的要求。 ? 记录的数据完整性:为记录赋予数据完整性规则。 ? 参照完整性:指相关表之间的数据一致性。
? 用户自定义完整性:指由用户通过编程实现对数据完整性的约束。
第五章 查询和视图
本章也是比较重要的章节,对于理论部分,经常会出一些查询和视图的理论分析,以选择题为多;另外一种重要的知识点就是:SELECT-SQL命令,这是每年必考的,除了命令的填空之外,近几年在上机操作的菜单题中经常要将整条命令书写,这是一个难点,也是今后练习的重点。上机操作的设计查询题目这里就不多说了,不过要注意,笔试和上机部分没有明显的区分,它们所含带的知识点都是一样的,只是考察这些知识点的方式不同,两种是相互融合的。 一、 SQL的基本概念 1.SQL语言主要特点
(1) SQL是一种一体化的语言。
它提供了一系列完整的数据定义、数据查询、数据操纵和数据控制等功能。 (2) SQL是一种高度非过程化的语言。
25