全国计算机等级考试二级VF历年试题合集含答案(CHM文件下载)>>
5.1 SQL概述
考点1 概述
1概念
SQL是结构化查询语言Structured Query Language的缩写。它包括数据查询、数据定义、数据操纵和数据控制4部分。Visual FoxPro在SQL方面支持数据定义、数据查询和数据操纵功能。另外,由于Visual FoxPro自身在安全控制方面的缺陷,所以它没有提供数据控制功能。
2 SQL语言的特点
(1)一种一体化的语言。
(2)一种高度非过程化的语言。
(3)语言非常简洁。
(4)可以直接以命令方式交互使用,也可以以程序方式使用。
5.2 查询功能
SQL的核心是查询,基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可嵌套执行,如表5-1所示。
表5-1 SQL命令动词
考点2 简单查询
1简单查询
简单查询是由SELECT和FROM短语构成的无条件查询,或由SELECT,FROM和WHERE短语构成的条件查询。
2简单的连接查询
连接是关系的基本操作之一,连接查询是一种基于多个关系的查询。
3嵌套查询
嵌套查询所要求的结果出自一个关系,但关系的条件却涉及多个关系。其内层基本上也是一个SELECT-FROM-WHERE查询语句。这种简单嵌套查询,可使用谓词IN或NOT IN来判断在外层的查询条件中是否包含内层查询的结果。
考点3 特殊运算符号
1 BETWEEN…AND…
含义:该查询的条件是在……范围之内,相当于用AND连接的一个逻辑表达式。
2 LIKE
含义:它是一个字符串匹配运算符,与之搭配使用的通配符包括“*”和“?”。
考点4 排序
使用SQL SELECT可以将查询结果进行排序,排序的短语是ORDER BY。
格式:ORDER BY Order_Item[ASCIDESC][,Order_Item[ASC|DESC]…]
说明:可以按升序(ASC)或降序(DESC)排序,允许按一列或多列排序。
考点5 计算查询
1简单的计算查询
SQL不仅具有一般的检索能力,而且还有计算方式的检索,用于计算检索的函数有:COUNT(计数)、SUM(求和)、AVG(计算平均值)、MAX(求最大值)及MIN(求最小值)。
2分组与计算查询
在SQL SELECT中可以利用GROUP BY子句进行分组计算查询。
格式:GROUP BY GroupColumn[,GroupColumn…][HAVING FilterCondition]
说明:可以按一列或多列分组,还可以用HAVING子句进一步限定分组的条件。它必须跟在GROUP BY子句之后,不可单独使用,与WHERE子句并不矛盾。
考点6 别名和自连接查询
(1)SQL语句允许在二OM短语中为关系定义别名,格式为:一
<关系名><别名>
(2) SQL不仅可以对多个关系进行连接操作,也可以将同一关系与其自身进行连接,这种连接就称为自连接。在关系的自连接操作中,别名是必不可少的。
考点7 使用量词和谓词的查询
与嵌套查询或子查询有关的运算符,除了IN和NOT IN运算符外,还有两类与子查询有关的运算符,它们有以下两种格式。
(1)<表达式><比较运算符>[ANY I ALL | SOME](子查询)
(2)[NOT]EXISTS(子查询)
EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。其本身并没有进行任何运算或比较,只用来返回子查询结果。
考点8 超链接查询
(1)在新的SQL标准中支持两个新的关系连接运算符,这两个新的连接运算是左连接(*=)和右连接=*):首先保证一个表中满足条件的元组都在结果表中,然后将满足连接条件的元组与另一个表的元组进行连接,不满足连接条件的则应将来自另一个表的属性值置为空值。在一般SQL中超链接运算符是“*=”(左连接)和“=*”(右连接)。
(2)在Visual FoxPro中不支持超链接运算符“*=”和“=*”,Visual FoxPro有专门的连接运算。下面拼出SQL中超链接的部分语句格式:
SELECT…
FROM Table INNER|LEFT|RIGHT|FULL JOIN Table
ON JoinCondition
WHERE…
考点9 Visual FoxPro中SQL SELECT的几个特殊选项
(l)显示部分结果,格式为:
TOP nExpr[PERCENT]
(2)将查询结果存放到数组中,格式为:
INTO ARRAY ArrayName
(3)将查询结果存放到临时文件中,格式为:
INTO CURSOR CursorName
(4)将查询结果存放到永久表中,格式为:
INTO DBF|TABLE TableName
(5)将查询结果存放到文本文件中,格式为:
TO FILE FileName[ADDITIVE]
(6)将查询结果直接输出到打印机,格式为:
TO PRINTER[PROMPT]
5.3 操作功能
考点10 插入
Visual FoxPro支持两种SQL插入命令的格式,一种是标准格式,另一种是特殊格式。
1标准格式
INSERT INTO dbf name[(frame 1[,fname2,…])]
VALUES(eExpressionl[,eExpression2,…])
2特殊格式
INSERT INTO dbf _name FROM ARRAY ArrayName|FROM MEMVAR
考点11 更新
SQL的数据更新命令格式如下:
UPDATE TableName
SET Column_Namel=eEpressionl[,Column_Name2=eExpression2…]
WHERE Condition
说明:利用WHERE字句指定条件,以更新满足条件的一些记录的字段值,并巨一次可更新多个字段;如果不使用WHERE子句,则更新全部记录。
考点12 删除
SQL从表中删除数据的命令格式如下:
DELETE FROM TableName[WHERE Condition]
说明:FROM指定从哪个表中删除记录,WHERE指定被删除的记录所满足的条件,如果不使用WHERE子句,则删除该表中的全部记录。
小提示:
当一个表定义一个主索引或候选索引后,由于相应的字段具有关键字的特性,即不能为空,所以只能用此命令插入记录、)APPEND和INSERT都是插入一条空白记录再输入各字段的值,故不能用它们来插入记录。
5.4 定义功能
考点13 表的定义
利用SQL命令建立的数据表同样可以完成在表设计器中设计表的所有功能。
格式:CREATE TABLE I DBF TableNamel[NAME LongTableName][FREE]
(FieldNarnel FieldType[(nFieldWidth[,nPrecision])][NULL |NOT NULL]
[CHECK IExpressionl [ERROR cMessageTextl]]
[DEFAULT eExpressionl]
[PRIMARY KEY I UNIQUE]
[PEFERENCES TableName2[AG TagName1]]
[NOCPTRANS]
[,FieldName2…]
[,PRIMARY KEY eEpression2 TAG TagName2|,
UNIQUE eExpression3 TAG TagName3]
[,FOREIGN KEY eExpression4 TagName4[NODUP]
REFERENCES TableName3 [TAG TagName5]]
[,CHECK lExpression2[ERROR cMessageText2]])
|FROM ARRAY ArravNasne
说明:此命令除了建立表的基本功能外,还包括满足实体完整性的主关键字(主索引)PRIMARY KEY、定义域完整性的CHECK约束及出错提示信息ERROR、定义默认值DEFAULT等,另外还有描述表之间联系的FOREIGN KEY和REFERENCES等。
考点14 表的删除
利用SQL命令删除表,可直接使用语句,格式为:
DROP TABLE Table_name
说明:如果删除的是自由表,则应该将当前打开的数据库先关闭,才能进行删除。如果删除数据库表,则要先打开数据库,在数据库中进行操作二否则,即使删除了数据库表,但记录在数据库中的信息并没有被删除,此后会出现错误提示。
考点15 表结构的修改
修改表结构的命令是ALTER TABLE,该命令有3种格式。
(1)ALTER TABLE TableNamel ADD| ALTER[COLUMN]FieldNamel
FieldTvpe[(nFieldWidth[,nPrecision])][NULL |NOT NULL]
[CHECK lExpressionl[ERROR cMessageTextl ]][DEFAULT eExpressionl]
[PRIMARY KEY |UNIQUE]
[REFERENCES TableName2[TAG TagNamel〕]
(2)ALTER TABLE TableNamel ALTER[COLUMN]FieldName2[NULL|NOT NULL]
[SET EFAULTeExpression2][SET CHECK lExpression2[ERROR cMessageText2]
[DROP DEFAULT][DROP CHECK]
(3)ALTER TABLE TableName1[DROP [COLUMN]FieldName3]
[SET CHECK lExpression3[ERROR cMessageText3]
[DROP CHECK]
[ADD PRIMARY KEY eExpression3 TAG TagName2[FOR lExpression4]]
[DROP PRIMARY KEY〕
[ADD UNIQUE eExpression4[TAG TagName3[FOR lExpression5]]]
[DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY[eExpression5] TAG TagName4[FOR lExpression6]
REFERENCES TableName2[TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6[SAVE]]
[RENAME COLUMN FieldName4 TO FieldName5]
考点16 视图的定义
1视图的概念及其定义
(l)视图的概念。
Visual FoxPro中视图是一个虚拟的表,可以是本地的、远程的或带参数的。
(2)视图的定义,格式为:
CREATE VIEW view name[(column_name[,column_name]…)]
AS select_statement
2从单个表派生出来的视图
视图一经定义,就可以和基本表一样进行各种查询,也可以进行一些修改操作。对于最终用户来说,有时并不需要知道操作的是基本表还是视图。
3从多个表派生出来的视图
视图一方面可以限定对数据的访问,另一方面又可以简化对数据的访问。
4视图的删除
视图由于是从表派生出来的,所以不存在修改结构的问题,但是视图可以删除。
格式:DROP VIEW<视图名>
5关于视图的说明
在关系数据库中,视图始终不真正含有数据,它总是原有表的一个窗口。所以,虽然视图可以像表一样进行各种查询,但是插入、更新和删除操作在视图上却有一定限制。在一般情况下,当一个视图是由单个表导出时可以进行插入和更新操作,但不能进行删除操作;当视图是从多个表导出时,插入、更新和删除操作都不允许进行。这种限制是很有必要的,它可以避免一些潜在问题的发生。