DROP TABLE (Transact-SQL)
更新日期: 2006 年 12 月 12 日
删除一个或多个表定义以及这些表的所有数据、索引、触发器、约束和指定的权限。任何引用已删除表的视图或存储过程都必须使用 DROP VIEW 或 DROP PROCEDURE 显式删除。
语法
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name [ ,...n ] [ ; ]
参数
- database_name
要在其中创建表的数据库的名称。
- schema_name
表所属架构的名称。
- table_name
要删除的表的名称。
备注
不能使用 DROP TABLE 删除被 FOREIGN KEY 约束引用的表。必须先删除引用 FOREIGN KEY 约束或引用表。如果要在同一个 DROP TABLE 语句中删除引用表以及包含主键的表,则必须先列出引用表。
可以在任何数据库中删除多个表。如果一个要删除的表引用了另一个也要删除的表的主键,则必须先列出包含该外键的引用表,然后再列出包含要引用的主键的表。
删除表时,表的规则或默认值将被解除绑定,与该表关联的任何约束或触发器将被自动删除。如果要重新创建表,则必须重新绑定相应的规则和默认值,重新创建某些触发器,并添加所有必需的约束。
如果使用 DELETE tablename 删除表中的所有行或使用 TRUNCATE TABLE 语句,则在被移除之前,表将一直存在。
删除使用了超过 128 个区的大型表和索引时,需要分两个单独的阶段:逻辑和物理阶段。在逻辑阶段中,对表使用的现有分配单元进行标记以便释放,并对其进行锁定,直到事务提交为止。在物理阶段,标记为要释放的 IAM 页被成批地物理删除。有关详细信息,请参阅删除并重新生成大型对象。
权限
要求对此表所属架构拥有 ALTER 权限,对此表拥有 CONTROL 权限,或具有 db_ddladmin 固定数据库角色的成员身份。
示例
A. 删除当前数据库中的表
以下示例将从当前数据库中删除 ProductVendor1
表及其数据和索引。
DROP TABLE ProductVendor1 ;
B. 删除其他数据库中的表
以下示例将删除 AdventureWorks
数据库中的 SalesPerson2
表。可以在服务器实例上的任何数据库中执行此示例。
DROP TABLE AdventureWorks.dbo.SalesPerson2 ;
C. 删除临时表
以下示例将创建一个临时表,测试该表是否存在,删除该表,然后再次测试该表是否存在。
USE AdventureWorks;
GO
CREATE TABLE #temptable (col1 int);
GO
INSERT INTO #temptable
VALUES (10);
GO
SELECT * FROM #temptable;
GO
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL
DROP TABLE #temptable;
GO
--Test the drop.
SELECT * FROM #temptable;
请参阅
参考
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DELETE (Transact-SQL)
sp_depends (Transact-SQL)
sp_help (Transact-SQL)
sp_spaceused (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
DROP VIEW (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (Transact-SQL)
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 12 月 12 日 |
|