D E L E T E 命 令

D E L E T E 命 令 - 图1给要删除的记录做标记

语 法

DELETE

[ Scope ] [FOR lExpression1 ] [ W H ILE lExpression2 ] [ IN n W orkArea | cTableAlias ]

[NOOPTIMIZE]

参 数 描 述

Scope

D E L E T E 命 令 - 图2D E L E T E 命 令 - 图3D E L E T E 命 令 - 图4D E L E T E 命 令 - 图5指 定 要 做 删 除 标 记 的 记 录 范 围 范 围 子 句 有 ALL NEXT nRecords

D E L E T E 命 令 - 图6RECORD nRecordNumber 和 REST

D E L E T E 命 令 - 图7D E L E T E 命 令 - 图8D E L E T E 命 令 - 图9D E L E T E 命 令 - 图10D E L E T E 命 令 - 图11D E L E T E 命 令 - 图12D E L E T E 命 令 - 图13D E L E T E 命 令 - 图14有关范围子句的详细内容 请参阅 帮助 中的 范围子句 和 语言概述

D E L E T E 命 令 - 图15DELETE 的默认范围是当前记录 (NEXT 1)

FOR lExpression1

D E L E T E 命 令 - 图16D E L E T E 命 令 - 图17指 定 一 个 条 件 仅 给 满 足 逻 辑 条 件 lExpression1 的 记 录 做 删 除 标 记

D E L E T E 命 令 - 图18D E L E T E 命 令 - 图19D E L E T E 命 令 - 图20D E L E T E 命 令 - 图21D E L E T E 命 令 - 图22如果 lExpression1 是一个可优化表达式 且表在 DECETED( ) 上建立索引时 可以用Rushmore 优化 DELETE ... FOR 创建的查询 要得到最佳性能 可在 FOR 子句中使用一个可优化表达式

D E L E T E 命 令 - 图23D E L E T E 命 令 - 图24D E L E T E 命 令 - 图25有关 Rushmore 优化表达式的内容 请参阅稍后部分的 SET OPTIMIZE 命 令 和

D E L E T E 命 令 - 图26D E L E T E 命 令 - 图27D E L E T E 命 令 - 图28D E L E T E 命 令 - 图29D E L E T E 命 令 - 图30D E L E T E 命 令 - 图31 M icrosoft Visual FoxPro 6.0 中 文 版 程 序 员 指 南 D E L E T E 命 令 - 图32 第 十 五 章 优 化 应 用 程序 中 的 掌 握 Rushmore 技术

W H ILE lExpression2

D E L E T E 命 令 - 图33D E L E T E 命 令 - 图34D E L E T E 命 令 - 图35D E L E T E 命 令 - 图36只 要 lExpression2 计 算 为 真 (.T.) 就 给 这 些 记 录 做 删 除 标 记

IN n W orkArea

D E L E T E 命 令 - 图37指 定 要 加 记 录 删 除 标 记 的 表 所 在 的 工 作 区

IN cTableAlias

D E L E T E 命 令 - 图38指 定 要 加 记 录 删 除 标 记 的 表 的 别 名

D E L E T E 命 令 - 图39D E L E T E 命 令 - 图40如 果 省 略 nWorkAreacTableAlias 就 给 当 前 选 定 工 作 区 中 的 表 记 录 做 删 除 标记

NOOPTIMIZE

D E L E T E 命 令 - 图41禁 止 DELETE 进 行 Rushmore 优 化

说 明

D E L E T E 命 令 - 图42D E L E T E 命 令 - 图43D E L E T E 命 令 - 图44D E L E T E 命 令 - 图45标有删除标记的记录在使用 PACK 前并不从表上做物理删除 标有删除标记的记录可以用 RECALL 恢复 清除标记

示 例

D E L E T E 命 令 - 图46D E L E T E 命 令 - 图47D E L E T E 命 令 - 图48D E L E T E 命 令 - 图49D E L E T E 命 令 - 图50下列示例打开 testdata 数据库中的 customer 表 对于 country 字段中包含 USA 的所有记录 使用 DELETE 命令标记为删除 显示所有标记为删除的记录 使 用 RECALL ALL 命令恢复所有标记为删除的记录

CLOSE DATABASES

OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 打开 Customer 表

D E L E T E 命 令 - 图51 D E L E T E 命 令 - 图52 D E L E T E 命 令 - 图53 D E L E T E 命 令 - 图54 D E L E T E 命 令 - 图55

D E L E T E 命 令 - 图56CLEAR

D E L E T E 命 令 - 图57 country = 'USA' && 删除标记

LIST FIELDS company, country FOR DELETED( ) && 列出已标记删除的记录

D E L E T E 命 令 - 图58RECALL ALL && 取消全部记录的删除标记

请 参 阅

DELETE-SQL, DELETED ( ) , PACK RECALL , SET DELETED