截断怎么在MYSQL中使用

  

截断怎么在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子句),用删除。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

截断怎么在MYSQL中使用