mysql中的delete和truncate_MySQL

WBOY
풀어 주다: 2016-06-01 13:38:27
원래의
1541명이 탐색했습니다.

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
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿