江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
4.1 SQL概述

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关于视图的说明
  在关系数据库中,视图始终不真正含有数据,它总是原有表的一个窗口。所以,虽然视图可以像表一样进行各种查询,但是插入、更新和删除操作在视图上却有一定限制。在一般情况下,当一个视图是由单个表导出时可以进行插入和更新操作,但不能进行删除操作;当视图是从多个表导出时,插入、更新和删除操作都不允许进行。这种限制是很有必要的,它可以避免一些潜在问题的发生。