mysql truncate 实例_Mysql实例mysql中delete、truncate删除操作详解

《Mysql实例mysql中delete、truncate删除操作详解》要点:

本文介绍了Mysql实例mysql中delete、truncate删除操作详解,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql数据库中delete语句、truncate语句的用法.一,Delete语句首先,delete单表语法:DELETE [LOW_PRIORITY] [QUICK] [IGNOR...

MYSQL学习本节内容:

mysql数据库中delete语句、truncate语句的用法.

MYSQL学习一,Delete语句

MYSQL学习首先,delete单表语法:

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

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]

MYSQL学习其次,delete多表语法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

tbl_name[.*] [,tbl_name[.*] ...]

FROM table_references

[WHERE where_definition]

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

FROM tbl_name[.*] [,tbl_name[.*] ...]

USING table_references

[WHERE where_definition]

MYSQL学习如果您编写的DELETE语句中没有WHERE子句,则所有的行都被删除.当您不想知道被删除的行的数目时,有一个更快的办法,就是用TRUNCATE TABLE.

MYSQL学习DELETE语句支持以下修饰符:

如果您指定LOW_PRIORITY,则DELETE的执行被延迟,直到没有其它客户端读取本表时再执行.

对于MyISAM表,如果您使用QUICK关键词,则在删除过程中,存储引擎不会合并索引端结点,这样可以加快部分种类的删除操作的速度.

在删除行的过程中,IGNORE关键词会使MySQL忽略所有的错误.(在分析阶段遇到的错误会以常规方式处理.)由于使用本选项而被忽略的错误会作为警告返回.

在MyISAM表中,被删除的记录被保留在一个带链接的清单中,后续的INSERT操作会重新使用旧的记录位置.要重新使用未使用的空间并减小文件的尺寸,则使用OPTIMIZE TABLE语句或myisamchk应用程序重新编排表.OPTIMIZE TABLE更简便,但是myisamchk速度更快.

MYSQL学习QUICK修饰符会影响到在删除操作中索引端结点是否合并.当用于被删除的行的索引值被来自后插入的行的相近的索引值代替时,DELETE QUICK最为适用.在此情况下,被删除的值留下来的空间被重新使用.

MYSQL学习未充满的索引块跨越某一个范围的索引值,会再次发生新的插入.当被删除的值导致出现未充满的索引块时,DELETE QUICK没有作用.在此情况下,使用QUICK会导致未利用的索引中出现废弃空间.

MYSQL学习如果您打算从一个表中删除许多行,使用DELETE QUICK再加上OPTIMIZE TABLE可以加快速度.这样做可以重新建立索引,而不是进行大量的索引块合并操作.

MYSQL学习用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值.本选项用于确保一个DELETE语句不会占用过多的时间.您可以只重复DELETE语句,直到相关行的数目少于LIMIT值为止.

MYSQL学习如果DELETE语句包括一个ORDER BY子句,则各行依照子句中指定的顺序进行删除.此子句只在与LIMIT联用是才起作用.

例如,查找与WHERE子句对应的行,使用timestamp_column进行分类,并删除第一(最旧的)行:

DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;

MYSQL学习可以同时删除许多个表中的行,并使用其它的表进行搜索:

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id;

--或者

DELETE FROM t1,t2 USING t1,t3 WHERE t1.id=t2.id AND t2.id=t3.id;

MYSQL学习当搜索待删除的行时,这些语句使用所有三个表,但是只从表t1和表t2中删除对应的行.

MYSQL学习以上例子显示了使用逗号操作符的内部联合,但是多表DELETE语句可以使用SELECT语句中允许的所有类型的联合,比如LEFT JOIN.

不过,不能在一个多表DELETE语句中使用ORDER BY或LIMIT.

MYSQL学习当引用表名称时,您必须使用别名(如果已给定):

DELETE t1 FROM test AS t1,test2 WHERE ...

MYSQL学习进行多表删除时支持跨数据库删除,但是在此情况下,您在引用表时不能使用别名.

例子:

DELETE test1.tmp1,test2.tmp2 FROM test1.tmp1,test2.tmp2 WHERE ...

MYSQL学习目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择.

MYSQL学习二,TRUNCATE语句

语法

TRUNCATE [TABLE] tbl_name

TRUNCATE TABLE用于完全清空一个表.从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同.

MYSQL学习对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表).使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键限制.

MYSQL学习对于其它存储引擎,TRUNCATE TABLE与DELETE FROM有以下几处不同:

1,删减操作会取消并重新创建表,这比一行一行的删除行要快很多.

2,删减操作不能保证对事务是平安的;在进行事务处理和表锁定的过程中尝试进行删减,会发生错误.

3,被删除的行的数目没有被返回.

MYSQL学习只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏.

表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数.即使对于MyISAM和InnoDB也是如此.MyISAM和InnoDB通常不再次使用序列值.

当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时分区定义(.par)文件不受影响.

MYSQL学习TRUNCATE TABLE是在MySQL中采用的一个Oracle SQL扩展.

MYSQL学习以上为大家介绍了mysql中delete、truncate语句的用法,希望对大家有所赞助.

编程之家PHP培训学院每天发布《Mysql实例mysql中delete、truncate删除操作详解》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值