SQL Server 中删除表和删除表有什么区别?

问题描述 投票:0回答:13

在SQL Server中,以下两者有什么区别-

  • 右键单击数据库对象(表/视图)并选择“删除表”(即将表脚本编写为 -> DROP To -> 新查询编辑器窗口)

  • 右键单击数据库对象(表/视图)并选择删除。

我都尝试过,并且都执行相同的操作。同一件事有两个选择有什么理由吗?删除选项只是删除数据库对象的粗略方法吗?

仅供记录 - 我正在使用 SS2008。

sql-server sql-server-2008
13个回答
48
投票

DROP
将删除所有数据和表结构。

DELETE
会删除数据,但表结构保持不变,我们仍然可以回滚数据。另外,通过
DELETE
,您可以使用
where
条件,即仅删除某些记录。


15
投票

至少在 SQL Server 2005 中是 drop tabledelete object。两者执行相同的操作。

Delete table
Drop table
并不相同。前者将从表中删除所有数据,而后者将从数据库中删除表。


9
投票

删除 v/s 删除。

  • Delete 语句执行基于条件的删除,而 Drop 命令则删除表中的整个记录。

  • Delete 语句仅删除表中的行,并保留表结构,而 Drop 命令会删除表中的所有数据和表结构。

  • Delete 操作可以回滚,并且不会自动提交,而 Drop 操作不能以任何方式回滚,因为它是自动提交的语句。


2
投票

其中一个执行删除,另一个为您提供执行删除的 TSQL 脚本,以便您可以在其他地方修改或使用它。


1
投票

这两个是相同的操作。 DROP TABLE 是用于此目的的 SQL 语句,Delete 是标准的、用户友好的、菜单驱动的命令名称。仅此而已。


1
投票

在删除对象 GUI 中,顶部有一个“脚本”选项,它提供了 t-sql 语句,该语句是普通的删除表语句。当您选择删除表选项时,生成的 t-sql 仅当该表存在于 sys.objects 表中时才会执行删除。


1
投票

删除表..它将从数据库中删除完整的表。它无法检索 bak 删除用于从表中删除数据..可以使用ROLL BACK检索数据。


1
投票

另一个主要区别是,在 DELETE 中,它将遍历/扫描所有(基于谓词的条件)记录并删除。但在 drop 中,它将遍历记录,而不是从数据库中删除实际的表条目。如果我们查看删除的执行计划:

如果是 Drop,因为它是 DDL 命令,它甚至不会遍历记录,也不会创建任何执行计划。


0
投票

如果您选择删除,然后选择编写脚本,您将看到它也为您提供了删除表语句。


0
投票

使用删除命令可以有条件地从表中删除行,但可以使用 COMMIT 和 ROLLBACK 完成/撤消更改。表结构永远不会丢失。截断是删除的替代方案,因为它允许删除行而不丢失表结构,但与删除不同的是,操作无法撤消。然而,Drop 语句会从数据库中完全删除表及其结构,并且此操作无法撤消。所以,Delete 是 DML 语句,Turncate 和 Drop 是 DDL 语句。


0
投票

删除表将删除表的内容和表本身。 删除表只会删除内容。 截断只会将内容“重置”为零


0
投票

如果使用了 drop 和 create to 语句,我可以回滚表的内容吗?


-1
投票

我们可以使用删除命令从表中删除特定记录。但是使用 drop 我们可以删除表。如果您使用 Drop,结构也会消失,但如果您使用删除命令,结构将不会消失。

© www.soinside.com 2019 - 2024. All rights reserved.