Home > Database > Mysql Tutorial > body text

mysql中的delete和truncate_MySQL

WBOY
Release: 2016-06-01 13:38:27
Original
1542 people have browsed it

bitsCN.com


mysql中的delete和truncate

 

在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在空mysqll表内容常见的有两种方法:一种delete,一种是truncate 。 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。    

 

一、truncate的语法结构为:

Sql代码  

TRUNCATE [TABLE] tbl_name   

 下面给出一个简单的小示例:

 我想删除 test表中所有的记录,可以使用如下语句:

Sql代码  

truncate table test;  

 

 二、delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

其语法结构是:

Sql代码  

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name   

  

[WHERE where_definition]   

  

[ORDER BY ...]   

  

[LIMIT row_count]   

 

按照上面的语法结构,我想删除 test表中所有 infoId等于abced的记录, 

就可以使用如下SQL语句:

Sql代码  

delete from test where infoId = 'abced';  

 

注意事项:

从语法结构中,我们可以看出,和update语法一样,我们是可以省略where子句的。不过,这是一个很危险的行为。因为如果不指定where子句,delete将删除表中所有的记录,而且是立即删除,即使你想哭都没地方,也没时间,因为你需要马上和主管承认错误,并且立即找出mysql日志,来回滚记录。

总结

不过truncate命令快规快,却不像delete命令那样对事务处理是安全的。因此,如果我们想要执行truncate删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。

 

bitsCN.com
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template