SQL Truncate,Delete,Drop建议

时间:2014-04-11 09:19:01

标签: sql database sql-delete truncate

我在SQL数据库中有一个表要删除数据吗?我想保留专栏。

e.g。我的表有3列,名称,年龄,日期。我不想删除这些,我只想删除数据。

我应该截断,删除还是删除?

6 个答案:

答案 0 :(得分:2)

不要丢弃 - 它会删除数据和定义 如果删除 - 数据消失,自动增量值从最后一个值开始 如果你截断 - 那就像你刚刚创建了表格一样。没有数据和所有计数器重置

答案 1 :(得分:2)

截断非常快 - 就像快速格式化表格一样。删除时不需要任何额外空间。你不能回滚他的操作。您无法指定条件。这是从表中删除所有数据的最佳选择。

删除要慢得多,并且您需要额外的空间来执行此操作,因为您必须能够回滚数据。如果需要删除所有数据,请使用truncate。如果需要指定条件,请使用delete。

删除表 - 您可以通过删除和删除数据来删除表中的数据,就像截断它一样,但速度较慢,您可能会遇到其他一些问题,例如外键依赖项。我绝对不推荐这种操作。

答案 2 :(得分:0)

delete from TableName应该做的伎俩

DROPping table也会删除列。

答案 3 :(得分:0)

删除: DELETE语句用于从表中删除行。

截断: SQL TRUNCATE命令用于删除表中的所有行,并释放包含该表的空格。

* 删除 * SQL DROP命令用于从数据库中删除对象。如果删除表,则会删除表中的所有行,并从数据库中删除表结构

答案 4 :(得分:0)

截断表格。在你的情况下,这将是一个很好的选择

答案 5 :(得分:0)

我们可以在删除,截断和删除条件下回滚数据。下降。 但必须在执行查询之前使用Begin Transaction,删除,删除&截断。

以下是示例:

Create Database Ankit

Create Table Tbl_Ankit(Name varchar(11))

insert into tbl_ankit(name) values('ankit');
insert into tbl_ankit(name) values('ankur');
insert into tbl_ankit(name) values('arti');

Select * From Tbl_Ankit

/*======================For Delete==================*/
Begin Transaction
Delete From Tbl_Ankit where Name='ankit'

Rollback
Select * From Tbl_Ankit

/*======================For Truncate==================*/
Begin Transaction
Truncate Table Tbl_Ankit 

Rollback
Select * From Tbl_Ankit

/*======================For Drop==================*/
Begin Transaction
Drop Table Tbl_Ankit 

Rollback
Select * From Tbl_Ankit