删除数据库和丢弃数据库有什么区别?

5

删除和丢弃数据库有什么区别?


你使用的是哪个数据库引擎? - AvatarKava
2
当你在查看“delete”和“drop”时,你可能想看一下“truncate”。 - lexu
8个回答

26

删除和丢弃命令之间的区别

删除:DELETE 命令用于从表中删除行。可以使用 WHERE 子句仅删除某些行。如果未指定 WHERE 条件,则将删除所有行。执行 DELETE 操作后,您需要提交或回滚事务以使更改永久化或撤销它。请注意,此操作将导致在该表上的所有 DELETE 触发器都会触发。

丢弃:DROP 命令从数据库中移除一个表。表的所有行、索引和权限也将被删除。不会触发任何 DML 触发器。该操作无法回滚。


12
当你从其他来源复制粘贴内容时,请注明出处! http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands请在执行删除操作时,注意以下三个 SQL 命令的区别:
  1. TRUNCATE:快速删除表中的所有行,但不记录日志。因此无法回滚操作,也不会触发触发器。由于不记录日志,因此 TRUNCATE 比 DELETE 更快。
  2. DELETE:从表中逐行删除数据,并记录每个已删除行的操作日志,因此可以使用回滚来恢复数据。在删除大量数据时可能较慢。
  3. DROP:完全删除整个表(包括索引、触发器等),并释放与该表相关联的所有资源。该操作不能被回滚,所以要非常小心。
- BlitzKrieg

5
简单来说,DELETE 命令会删除匹配的行,而 DROP 命令会删除整个表。

1
更好的是,所有匹配的行。 - animuson

3

我知道这是一篇旧帖子,但我自己也在寻找答案,因为我相信原帖提到的是删除数据库而不是表或内容,所以我想介入一下。

两种方式都可以删除数据库,但如果你想要完全删除数据库和相关的工件,可能需要多个步骤。

DELETE

如果你正在使用SQL Server管理工具,你可以右键单击数据库并选择删除来删除数据库。结果对话框提供了几个复选框:

  1. '删除备份和还原历史信息'
  2. '关闭现有连接'

如果你不打勾'删除备份和还原历史信息',那些文件将保留在服务器上,除非你手动摆脱它们。 ‘关闭现有连接’是一个好主意,否则你可能会收到一个错误,告诉你数据库仍然在使用中(即使只是你在尝试删除它时)

DROP

单独使用SQL命令'DROP'并不能删除所有东西。你仍然需要删除备份历史记录,并将数据库设置为“单用户模式”,否则它可能会像上面那样抱怨数据库仍在使用中。

--Remove backup history
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'YourDBName'
GO
USE [master]
GO
--close all the open connections to your database
ALTER DATABASE [YourDBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
--remove the actual database 
DROP DATABASE [YourDBName]
GO

2

删除操作会移除内容并删除数据库的结构。


2

Delete会删除表格的内容。Drop会删除表格的内容和结构。Delete可以被回滚,但Drop不能被回滚。


1
假设您正在使用MS SQL 如果要删除整个,则应使用以下命令:
DROP TABLE MyTable 这将删除整个表及其约束条件。
要删除任何特定行,请使用以下命令:
DELETE FROM MyTable WHERE id=5
这将删除id = 5的行。 如果没有匹配的条件,则会删除所有行。

0

DROP 命令会将整个表及其相关对象从目录中删除,需要您从头开始创建所有索引和约束。


0

插入一个函数,可以物理删除特定的表或列。 表结构保持不变。 如果您想查看结构,可以编写此代码 desc tablename; 删除表或列功能永久删除表或列,以及表的结构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接