您的位置:首页 > 其它

replace和update的区别是什么

2016-07-25 10:17 190 查看
replace 来自于古老的 xBase 语法,update 来自于 SQL 语法。

对于单表来说,除了语法上的区别之外,功能基本相同。
对多表替换来说,replace 需要从表先有索引,然后主表 set relation to 关键字段 intto 从表,建立关联后才能实现根据从表条件更新主表字段内容;update 不需要从表有索引,直接在 join ... on 中指定关联字段即可。 

应优先选用 update 语法,因为它符合 SQL 规范,更易移植,更新前也不需要切换到主表所在工作区。
如果要更新的表巨大,或对性能有严格要求,在某些情况下(例如:更新条件(for 或者 where 中指定的过滤表达式)所用字段已排序或有索引,又或只需更新几条连续的记录),才优先选用 replace 语法。因为 replace 可以先用 goto 记录号,然后用 next ?, while ... 等字句来限制更新范围,避免不必要的行比较,特别是 while 子句与 for 条件连用的方法,不是老狐狸不会知道这其中的巨大性能差异。

SQL 语法的操作对象是一个记录集,xBase 语法的操作精度到单条记录,控制粒度不在一个级别上,所以 xBase/vfp 在记录操作的速度上其他语言无法与之匹敌,但很多时候新手不容易掌握这其中的分寸。

在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。

UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。


UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: