②复合字段索引。
㈢.用命令建立索引
建立索引的命令是INDEX,具体格式如下:
INDEX ON eExpression TO IDXFileNamel┃TAG TagName OF CDXFileNamel
FOR lExpression][COMPACT] [ASCENDNG][DESCENDNG] [UNQUE][CANDDATE] [ADDTVEl
㈣.使用索引
1.打开索引文件
与表名相同的结构索引在打开表时都能够自动打开,但是对于非结构索引必须在使用之前打开索引文件。打开索引文件的命令格式为:
SET INDEX TO ndexFlelst
2.设置当前索引
尽管结构索引在打开表时都能够自动打开,或者打开了非结构复合索引文件作为主控索引文件,在使用某个特定索引项进行查询或需要记录按某个特定索引项的顺序显示时,则必须用SETORDER命令指定当前索引项,SETORDER命令的常用格式是:
SET ORDERT TO [nIndexNumber┃ [TAG] TagName]
[ASCENDNG][DESCENDNG]
3.使用索引快速定位
用SEEK命令定位。SEEK是利用索引快速定位的命令,常用格式是: SEEK eExpression [ORDER nIndexNumber ┃ [TAG]TagName]
[ASCENDNGDESCENDNG]
4.删除索引
如果某个索引不再使用了则可以删除它,删除索引的办法是在表设计器中使用”索引”选项卡选择并删除索引。使用命令删除结构索引的格式是:
DELETE TAG TagNamel
其中TagNamel指出了要删除的索引名。如果要删除全部索引可以使用命令: DELETE TAG ALL
考核知识点五 数据完整性 ㈠.实体完整性与主关键字
实体完整性是保证表中记录惟一的特性,即在一个表中不允许有重复的记录。在Visual FoxPro中利用主关键字或候选关键字来保证表中的记录惟一,即保证实体惟一性。
如果一个字段的值或几个字段的值能够惟一地标识表中的一条记录,则这样的字段称为候选关键字。在一个表上可能会有几个具有这种特性的字段或字段的组合,这时从中选择一个作为主关键字。
㈡.域完整性与约束规则
建立字段有效性规则比较简单直接的方法仍然是在表设计器中建立,在表设计器的“字段”选项卡中有一组定义字段有效 性规则的项目,它们是“规则”(字段有效性规则、“信息”(违背字段有效性规则时的提示信息)、“默认值”(字段的默认值)三项。具体操作步骤如下:
①首先单击选择要定义字段有效性规则的字段;
②然后分别输入和编辑规则、信息及默认值等项目。
字段有效性规则的项目可以直接输入,也可以单击输入框旁的按钮打开表达式生成器对话框编辑、生成相应的表达式。
㈢.参照完整性与表之间的关联
参照完整性与表之间的联系有关,它的大概含义是:当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。假如一个职工记录由仓库号、职工号和工资三个字段构成,当插入一条这样的记录时,如果没有参照完整性检查,则可能会插入一个并不存在的仓库的职工记录,这时插入的记录肯定是错误的。如果在插入仓库的职工记录之前,能够进行参照完整性检查,检查指定职工记录的仓库号在仓库表中是否存在,则可以保证插入记录的合法性。
参照完整性是关系数据库管理系统的一个很重要的功能。在Visual FoxPro中为了建立参照完整性,必须首先建立表之间的联系(在中文版Visual FoxPro中称为关系)。
①建立表之间的联系; ②设置参照完整性约束。
考核知识点六 自由表 ㈠.数据库表与自由表
当没有数据库打开时,建立的表就是自由表。建立自由表的方法有:
①在项目管理器中,从“数据”选项卡中选择“自由表”选项,然后选择“新建”命令按钮打开“表设计器”建立自由表。
②确认当前没有打开的数据库,选择“文件”菜单下的“新建”命令,从“新建”对话框中的“文件类型”组框中选择“表”选项,然后单击“新建文件”按钮打开“表设计器”建立自由表。
③确认当前没有打开的数据库,使用CREATE命令打开“表设计器”建立自由表。
㈡.将自由表添加到数据库
在数据库设计器中可以从“数据库”菜单中选择“添加表”,然后从“打开”对话框中选择要添加到当前数据库的自由表。
另外,还可以用ADD TABLE命令添加一个自由表到当前数据库中,具体命令格式是: ADD TABLE TableName ┃? ┃[NAME LongTableName]
㈢.从数据库中移出表
当数据库不再使用某个表,而其他数据库要使用该表时,必须将该表从当前数据库中移出,使之成为自由表。在项目管理器中,将数据库下的表展开,并选择所要移出的具体表,接着单“移去”按钮,从中选择“移去”即可。
另外,还可以用REMOVETABLE命令将一个表从数据库中移出,具体命令格式是: REMOVE TABLE TableName ┃ ? [DELETE][RECYCLE]
考核知识点七 多个表的同时使用
㈠.多工作区的概念
指定工作区的命令是:
SELECT nWorkArea┃cTableAlias
㈡.使用不同工作区的表
除了可以用SELECT命令切换工作区使用不同的表外,也允许在一个工作区中使用另外一个工作区中的表,实际上,前面介绍过的某些命令有相关的选项,即短语:
IN nWorkArea ┃ cTableAlias
其中用nWorkArea指定工作区号或用cTableAlias指定表名或表的别名。
㈢.表之间的关联
虽然永久联系在每次使用表时不需要重新建立,但永久联系不能控制不同工作区中记录指针的联动。所以在开发Vsual FoxPro应用程序时,不仅需用永久联系,有时也需使用能够控制表间记录指针关系的临时联系。这种临时联系称为关联,使用SET RELATON命令建立。
SET RELATION命令的常用格式是:
SET RELATION TO eExpressionl INTO nWorkAreal ┃ cRableAliasl
考核知识点八 排序
索引可以使用产按照某种顺序浏览或查找表中的记录,这时的顺序是逻辑的,是通过索引关键字实现的。FoxBase数据库从一开始就提供了一种物理排序的命令,它可以将表中的记录物理地按顺序重新排列。物理排序的命令是SORT,常用格式如下:
SORT TO TableName ON FeldNamel [/A┃/D][/C] [,FeldName2[/A┃/D][/C]
[ASCENDNG┃DESCENDNG] [FOR lExpressionl] [FELDS FieldNameList]
1.1.5 关系数据库标准语言SQL
考核知识点一 SQL概述
SQL语言具有如下主要特点:
①SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。以前的非关系模型的数据语言一般包括存储模式描述语言、概念模式描述语言、外部模式描述语言和数据操纵语言等等,这种模型的数据语言,一是内容多,二是掌握和使用起来都不像SQL那样简单、实用。
②SQL语言是—种高度非过程化的语言,它没有必要—步步地告诉计算机“如何”去做,而只需描述清楚用户要“做什么”,SQL语言就可朗夸要求交给系统,自动完成全部工作。
③SQL语言非常简洁。虽然SQL语言功能很强,但它只有为数不多的几条命令,另外SQL的语法也非常简单,它很接近英语语言,因此容易学习、掌握。
④SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。现在很多数据库应用开发工具都将SQL语言直接融入到自身的语言之中,使用起来更方便,Visual FoxPro就是如此。这些使用方式为用户提供了灵活的选择余地。此外,尽管SQL的使用方式不同,但SQL语言的语法基本是一致的。
考核知识点二 查询功能
SQL的核心是查询。SQL的查询命令也称为SELECT命令,它的基本形式由SELECT—FROM—WHERE查询块组成,多个查询块可以嵌套执行。
㈠.简单查询
这样的查询由SELECT和FROM短语构成无条件查询,或由SELECT、FROM和WHERE短语构成条件查询。
㈡.简单的连接查询
连接是关系的基本操作之一,连接查询是一种基于多个关系的查询。
㈢.嵌套查询
这类查询所要求的结果出自一个关系,但相关的条件却涉及多个关系。
㈣.几个特殊运算符
在进行更复杂、涉及更多关系的检索之前,可以在SQLSELECT中使用的几个特殊运算符,它们是BETWEEN?AND?和LIKE等。
㈤.排序
使用SQL SELECT可以将查询结果排序,排序的短语是ORDER BY,具体格式如下: ORDER BY Order_ltem [ASC┃DESC],Order_ltem [ASC┃DESC]...]
从中可以看出,可以按升序(ASC)或降序(DESC)排序,允许按一列或多列排序。
㈥.简单的计算查询
SQL语言是完备的,也就是说,只要数据是按关系方式存入数据库的,就能构造合适的SQL命令把它检索出来。事实上,SQL不仅具有一般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、检索某个仓库中职工的最高工资值等。用于计算检索的函数有:
①COUNT——计数; ②SUM——求和;
③AVG——计算平均值; ④MAX——求最大值; ⑤MIN——求最小值。
这些函数可以用在SELECT短语中对查询结果进行计算。
㈦.分组与计算查询
利用GROUP BY子句进行分组计算查询使用得更加广泛。GROUP BY短语的格式如下:GROUP BY GroupColumn,GroupColumn..][HAVING filtercondition] 可以按一列或多列分组,还可以用HAVING进一步限定分组的条件。
㈧.利用空值查询
SQL支持空值,当然也可以利用空值进行查询。