当前位置:   article > 正文

如果SQL Server中存在表,如何删除表?_若要删除数据库中已经存在的表s错了咋样阐述

若要删除数据库中已经存在的表s错了咋样阐述

表名是Scores

执行以下操作是否正确?

  1. IF EXISTS(SELECT *
  2. FROM dbo.Scores)
  3. DROP TABLE dbo.Scores

#1楼

ANSI SQL /跨平台方式是使用INFORMATION_SCHEMA ,它专门用于查询有关SQL数据库中对象的元数据。

  1. if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'Scores' AND TABLE_SCHEMA = 'dbo')
  2. drop table dbo.Scores;

大多数现代RDBMS服务器至少提供基本的INFORMATION_SCHEMA支持,包括: MySQLPostgresOracleIBM DB2Microsoft SQL Server 7.0(及更高版本)


#2楼

我写了一个小UDF,如果它的参数是现存表的名称,则返回1,否则返回0:

  1. CREATE FUNCTION [dbo].[Table_exists]
  2. (
  3. @TableName VARCHAR(200)
  4. )
  5. RETURNS BIT
  6. AS
  7. BEGIN
  8. If Exists(select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = @TableName)
  9. RETURN 1;
  10. RETURN 0;
  11. END
  12. GO

要删除表User如果存在),请调用它:

IF [dbo].[Table_exists]('User') = 1 Drop table [User]

#3楼

看过很多不能真正发挥作用的人。 创建临时表时,必须从tempdb中删除它!

唯一有效的代码是:

  1. IF OBJECT_ID('tempdb..#tempdbname') IS NOT NULL --Remove dbo here
  2. DROP TABLE #tempdbname -- Remoeve "tempdb.dbo"

#4楼

我希望这有帮助:

  1. begin try drop table #tempTable end try
  2. begin catch end catch

#5楼

从SQL Server 2016,您可以使用

DROP TABLE IF EXISTS dbo.Scores

参考: DROP IF EXISTS - SQL Server 2016中的新功能

它将很快出现在SQL Azure数据库中。


#6楼

我用:

  1. if exists (select *
  2. from sys.tables
  3. where name = 'tableName'
  4. and schema_id = schema_id('dbo'))
  5. begin
  6. drop table dbo.tableName
  7. end

#7楼

这样做,这是最简单的方法。

qry将是您自己的查询,无论您在选择列表中想要什么。

  1. set @qry = ' select * into TempData from (' + @qry + ')Tmp '
  2. exec (@qry)
  3. select * from TempData
  4. drop table TempData

#8楼

  1. IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N'Scores') AND TYPE in (N'U'))
  2. DROP TABLE Scores
  3. GO

#9楼

简单的是:

  1. IF OBJECT_ID(dbo.TableName, 'U') IS NOT NULL
  2. DROP TABLE dbo.TableName

其中dbo.TableName是你想要的表, 'U'是你的table type


#10楼

在SQL Server 2016(13.x)及更高版本中

DROP TABLE IF EXISTS dbo.Scores

在早期版本中

  1. IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
  2. DROP TABLE dbo.Scores;

是你的table type


#11楼

一个更好的视觉和简单方法,如果您使用Visual Studio,只需从菜单栏打开,

查看 - > SQL Server对象资源管理器

它应该如此处所示打开

在此输入图像描述

选择并右键单击要删除的表,然后删除。 应该显示这样的屏幕。 单击更新数据库以确认。

在此输入图像描述

此方法非常安全,因为它为您提供反馈,并将警告已删除表与其他表的任何关系。


#12楼

执行以下操作是否正确?

 IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores 

这将删除该表仅当它包含任何行(如果该表不存在会引发错误)。

相反,对于永久表,您可以使用

  1. IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
  2. DROP TABLE dbo.Scores;

或者,对于临时表,您可以使用

  1. IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
  2. DROP TABLE #T;

SQL Server 2016+有一种更好的方法,使用DROP TABLE IF EXISTS … 请参阅@Jovan的答案


#13楼

要么:

  1. if exists (select * from sys.objects where name = 'Scores' and type = 'u')
  2. drop table Scores
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/440744
推荐阅读
相关标签
  

闽ICP备14008679号