久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 数据库 > MySQL 3.23 中文参考手册 > 7.11 DELETE句法 文档讨论

MySQL 3.23 中文参考手册

后退 7.11 DELETE句法 前进

2004-02-12 MySQL 译者:晏子 http://www.mysql.com/doc.html
 
DELETE [LOW_PRIORITY] FROM tbl_name
[WHERE where_definition] [LIMIT rows]

DELETE从tbl_name表中删除满足由where_definition给出的条件的行,并且返回删除记录的个数。

如果你发出一个没有WHERE子句的DELETE,所有行都被删除。MySQL通过创建一个空表来完成,它比删除每行要快。在这种情况下,DELETE返回零作为受影响记录的数目。(MySQL不能返回实际上被删除的行数,因为进行再创建而不是打开数据文件。只要表定义文件“tbl_name.frm”是有效的,表才能这样被再创建,即使数据或索引文件破坏了)。

如果你确实想要知道在你正在删除所有行时究竟有对少记录被删除,并且愿意承受速度上的惩罚,你可以这种形式的一个ELETE语句:

mysql> DELETE FROM tbl_name WHERE 1>0;

注意这比没有WHERE子句的DELETE FROM tbl_name慢的多了,因为它一次删除一行。

如果你指定关键词LOW_PRIORITY,DELETE的执行被推迟到没有其他客户读取表后。

删除的记录以一个链接表维持并且随后的INSERT操作再次使用老的记录位置。为了回收闲置的空间并减小文件大小,使用OPTIMIZE TABLE语句或myisamchk实用程序重新组织表。OPTIMIZE TABLE较容易,但是myisamchk更快。见7.9 OPTIMIZE TABLE句法和13.4.3 表优化。

MySQL对DELETE特定的LIMIT rows选项告诉服务器在控制被返回到客户之前,将要删除的最大行数,这可以用来保证一个特定DELETE命令不会花太多的时间。你可以简单地重复DELETE命令直到受影响的行数小于LIMIT值。
 
后退 目录 前进
7.10 DROP TABLE句法 上一级 7.12 SELECT句法
 
发表评论 关闭窗口
 相关内容
 
 文档分类
操作系统
网络服务
编程语言
数据库
RFC请求注解
基础原理
软件使用
硬件参考
解决方案
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net