DELETE-SQL 命 令

DELETE-SQL 命 令 - 图1标记删除记录

语 法

DELETE FROM [ DatabaseName !] TableName

[ W H E R E FilterCondition1 [AND | OR FilterCondition2 ...]]

参 数 描 述

FROM [ DatabaseNam e!] TableName

DELETE-SQL 命 令 - 图2指 定 表 中 哪 些 记 录 标 记 为 删 除

DELETE-SQL 命 令 - 图3DELETE-SQL 命 令 - 图4DELETE-SQL 命 令 - 图5DELETE-SQL 命 令 - 图6DatabaseName! 指定包含表的非作用数据库名称 如果数据库不是当前使用的数据库 您必须要包含表所在数据库的名称 在数据库名称之后与表名之前使用叹号 (!) 分隔

W H E R E FilterCondition1 [AND | OR FilterCondition2 ...]

DELETE-SQL 命 令 - 图7指 定 Visual FoxPro 标 记 删 除 的 记 录 的 规 则

DELETE-SQL 命 令 - 图8DELETE-SQL 命 令 - 图9DELETE-SQL 命 令 - 图10DELETE-SQL 命 令 - 图11DELETE-SQL 命 令 - 图12DELETE-SQL 命 令 - 图13FilterCondition 指定一定条件 符合的该条件的记录将标记为删除 您可以包含随意数量的过滤条件 对它使用 AND 或 OR 操作符连接 您还可以使用 NOT 操作符将逻辑表达式的值取反 或使用 EMPTY( ) 函数检查一个空字段

说 明

DELETE-SQL 命 令 - 图14DELETE-SQL 命 令 - 图15在执行 PACK 命令之前 标记为删除的记录实际上并没有从表中删除 使用 RECALL

DELETE-SQL 命 令 - 图16命令可以恢复 DELETE-SQL 命 令 - 图17 取消标记 DELETE-SQL 命 令 - 图18 已做删除标记的记录

DELETE-SQL 命 令 - 图19DELETE-SQL 命 令 - 图20DELETE-SQL 命 令 - 图21DELETE-SQL 命 令 - 图22DELETE-SQL 命 令 - 图23DELETE-SQL 命 令 - 图24DELETE-SQL 命 令 - 图25DELETE-SQL 命 令 - 图26如果 SET DELETED 设置为 ON 所有包含范围的命令均忽略已做删除标记的记录 与 DELETE, DELETE 不同 当在为共享而打开的表中标记多个删除记录时 SQL 使用记录锁定 这样做减少了记录在多用户情况下的冲突 但是可能会降低性能 如果要获取最大性能 应以独占方式打开表或使用 FLOCK( ) 函数锁定表

示 例

DELETE-SQL 命 令 - 图27以下示例打开了 testdata 数据库中的 customer 表 使用 DELETE-SQL 将 country 字段

DELETE-SQL 命 令 - 图28DELETE-SQL 命 令 - 图29DELETE-SQL 命 令 - 图30中值为 USA 的记录标记为删除 显示所有标记为删除的记录 使用 RECALL ALL 命令将所有标记为删除的记录取消标记

CLOSE DATABASES CLEAR

OPEN DATABASE HOME(2)+"Data\testdata" USE customer && Open Customer table

DELETE-SQL 命 令 - 图31DELETE-SQL 命 令 - 图32 DELETE-SQL 命 令 - 图33 DELETE-SQL 命 令 - 图34 DELETE-SQL 命 令 - 图35 FROM customer WHERE country = "USA" && 标记删除

CLEAR

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

  • DELETE-SQL 命 令 - 图36如果文件在此时整理

    将删除记录

WAIT WINDOW "Records currently marked for deletion"+CHR(13) + ; "Press any key to revert..."

  • 取消所有标记删除记录的标记

RECALL ALL CLEAR

  • 验证恢复的记录

COUNT FOR DELETED( )=.T. TO nDeleted

  • 将 nDeleted 转化为字符串并显示信息

WAIT WINDOW ALLTRIM(STR(nDeleted)) + " records marked for deletion."

请 参 阅

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