SQL Server DELETE 或 DROP 表

17 Mar 2025 | 4 分钟阅读

SQL Server 允许 DBA 删除数据库中不相关或过时的表。 当我们删除一个表时,完整的数据和整个结构或定义将从表中永久删除。 因此,在从指定数据库中删除表时,我们必须非常小心。 如果 SQL Server 找不到目标数据库表,它将抛出一个错误消息。

SQL Server 主要提供了两种删除表的方法

  • Transact-SQL 命令
  • SQL Server Management Studio

让我们详细讨论它们。

使用 T-SQL 命令 DROP TABLE

我们可以使用以下语法在 SQL Server 中删除表

在上面的语法中,

  • 我们需要首先写入要删除的**表名**。 接下来,我们需要指定存储该表的**数据库名**,**schema name**指示该表属于哪个 schema。 应该注意的是,数据库名称是可选的。 如果我们省略它,此查询将从当前连接的数据库中删除该表。
  • **IF EXISTS** 是一个可选子句,指示只有当表已经存在于数据库中时才会被删除。 此子句从 **SQL Server 2016 13.x** 开始可用。

如果我们想在一个命令中删除多个表,我们可以使用逗号分隔的表名列表,如下所示

当我们在 SQL Server 中删除一个表时,它也会删除该表的所有数据、触发器、约束和权限。 此查询不允许删除显式引用已删除表的视图、用户定义函数和存储过程。 因此,如果我们想显式删除这些对象,我们应该使用 **DROP VIEW** 和 **DROP PROCEDURE** 语句。

在删除表之前,我们必须记住以下几点

  1. DROP TABLE 查询将删除该表,包括它的物理磁盘文件。 因此,如果将来我们需要恢复它,我们必须保留一个备份。
  2. 如果一个**外键**约束引用了该表,此查询不会删除该表。 如果我们想这样做,我们将首先删除引用的外键约束或该表。 此外,当引用表和主键表都在同一个 DROP TABLE 语句中被删除时,我们首先列出引用表。
  3. 当表有一个带有 **FILESTREAM** 的 varbinary (max) 列时,此语句不会删除存储在文件系统中的数据。

注意:我们必须拥有表所属 schema 的 ALTER 权限和表的 CONTROL 权限才能执行 DROP TABLE 语句。

示例

此示例指定了我们如何从数据库中删除现有表。 假设我们的数据库有一个名为 "student_data" 的表,其中包含以下数据

SQL Server DELETE or DROP Table

如果我们想从数据库中删除此表,我们可以使用如下语句

它将永久删除该表。 如果我们重新访问这个表,我们将得到一个错误消息,如下面输出所示

SQL Server DELETE or DROP Table

如果我们试图删除一个数据库中不存在的表,SQL Server 将抛出以下错误消息

SQL Server DELETE or DROP Table

然而,如果我们尝试使用 IF EXISTS 子句删除数据库中不可用的表,SQL Server 不会显示任何错误或警告消息。 见下面的输出

SQL Server DELETE or DROP Table

使用 SQL Server Management Studio DROP TABLE

我们也可以使用 SSMS 从数据库中删除表。 以下步骤解释了如何使用 SSMS 删除表

步骤 1: 打开 SSMS,然后导航到 对象资源管理器 -> 数据库 -> 文件夹。 它将显示所有可用的表。

步骤 2: 选择你数据库中不再需要的所需表,然后右键单击它以获取弹出菜单。 现在,从出现的菜单中选择删除选项。 见下图

SQL Server DELETE or DROP Table

步骤 3: 一旦我们点击删除选项,我们将看到删除模型对象框来确认删除过程。 单击确定按钮从 SQL Server 中永久删除数据库。

SQL Server DELETE or DROP Table

步骤 6: 如果一切正常,所选表将从数据库中删除。 我们可以通过单击刷新按钮或按键盘上的 F5 来更新对象列表来验证这一点。 我们可以看到 'backup_employee' 表不再可用。

本文帮助您学习如何使用 SQL 查询和 SQL Server Management Studio 从数据库中永久删除表。