截断怎么在MYSQL中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、截断语法
[, {database_name。[], schema_name 只|,schema_name 只},) table_name才能 (,,)
参数
database_name
数据库的名称。
schema_name
表所属架构的名称。
table_name
要截断的表的名称,或要删除其全部行的表的名称。
二,截断使用注意事项
1,截断表在功能上与不带,子句的删除语句相同:二者均删除表中的全部行。但截断表比删除速度快,且使用的系统和事务日志资源少。
2,删除语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE表通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3,截断表删除表中的所有行,但表结构及其列,约束,索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用删除。如果要删除表定义及其数据,请使用DROP TABLE语句。
4,对于由外键约束引用的表,不能使用截断表,而应使用不带,子句的删除语句。由于截断表不记录在日志中,所以它不能激活触发器。
5,表不截断能用于参与了索引视图的表。
6,对用截断表删除数据的表上增加数据时,要使用更新统计信息来维护索引信息。
7,如果有回滚语句,删除操作将被撤销,但截断不会撤销。
三,不能对以下表使用截断表
1,由外键约束引用的表。(您可以截断具有引用自身的外键的表。)
2,参与索引视图的表。
3,通过使用事务复制或合并复制发布的表。
4,对于具有以上一个或多个特征的表,请使用删除语句。
5,表不截断能激活触发器,因为该操作不记录各个行删除。
四,截断,下降,删除区别
1.下降和删除只是删除表的数据(定义),减少语句将删除表的结构,被依赖的约束(限制),触发器(触发),索引(指数);依赖于该表的存储过程/函数将保留,但是变为无效的状态。
2.删除语句是DML语言,这个操作会放在回滚谈一段中,事物提交后才生效,如果有相应的触发器(触发),执行的时候将被触发.TRUNCATE,下降是DDL语言,操作后即生效,原数据不会放到回滚中,不能回滚,操作不会触发触发器。
3.删除语句不影响表所占用的程度上,高水线(高水准)保持原位置不动.drop语句将表所占用的空间全部释放.TRUNCATE语句缺省情况下将空间释放到minextents的程度上,除非使用重用storage.truncate会将高水线复位(回到最初)。
4。效率方面:在下降;截断比;删除
5。安全性:小心使用下降与截断,尤其是在没有备份的时候,想删除部分数据可使用删除需要带上,子句,回滚段要足够大,想删除表可以用下降,想保留表只是想删除表的所有数据,如果跟事物无关可以使用截断,如果和事物有关,又或者想触发触发,还是用删除,如果是整理表内部的碎片,可以用截断跟上重用存储,再重新导入,插入数据。
6.删除是DML语句,不会自动提交.drop/截断都是DDL语句,执行后会自动提交。
7日下降一般用于删除整体性数据如表,模式,索引,视图,完整性限制等;删除用于删除局部性数据如表中的某一元组
8滴把表结构都删了,删除只是把数据清掉
9,当你不再需要该表时,用下降;当你仍要保留该表,但要删除所有记录时,用截断;当你要删除部分记录时(总是与一个where子句),用删除。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。