SQLserver删除某数据库中所有表实现思路
2022-11-12 09:42:52
内容摘要
这篇文章主要为大家详细介绍了SQLserver删除某数据库中所有表实现思路,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
方便删除数据库中
文章正文
这篇文章主要为大家详细介绍了SQLserver删除某数据库中所有表实现思路,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下
代码如下:
--删除所有约束
DECLARE c1 cursor for
select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; '
from sysobjects
where xtype ='F'
open c1
declare @c1 varchar(8000)
fetch nextfrom c1 into@c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch nextfrom c1 into@c1
end
close c1
deallocate c1
--删除数据库所有表
declare @tname varchar(8000)
set@tname=''
select@tname=@tname+Name+','from sysobjects where xtype='U'
select@tname='drop table '+ left(@tname,len(@tname)-1)
exec(@tname)
然后清空数据库中的所有表:如果需要删除存储过程等只需要将上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Proceduresysobjects的xtype代表含义:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。列名 数据类型 描述name sysname 对象名。Id int 对象标识号。xtype char(2) 对象类型。可以是下列对象类型中的一种:C = CHECK 约束D = 默认值或 DEFAULT 约束F = FOREIGN KEY 约束L = 日志FN = 标量函数IF = 内嵌表函数P = 存储过程PK = PRIMARY KEY 约束(类型是 K)RF = 复制筛选存储过程S = 系统表TF = 表函数TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程uid smallint 所有者对象的用户 ID。info smallint 保留。仅限内部使用。status int 保留。仅限内部使用。base_schema_ver int 保留。仅限内部使用。replinfo int 保留。供复制使用。parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。crdate datetime 对象的创建日期。ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。schema_ver int 版本号,该版本号在每次表的架构更改时都增加。stats_schema_ver int 保留。仅限内部使用。type char(2) 对象类型。可以是下列值之一:C = CHECK 约束D = 默认值或 DEFAULT 约束F = FOREIGN KEY 约束FN = 标量函数IF = 内嵌表函数K = PRIMARY KEY 或 UNIQUE 约束L = 日志P = 存储过程R = 规则RF = 复制筛选存储过程S = 系统表TF = 表函数TR = 触发器U = 用户表V = 视图X = 扩展存储过程userstat smallint 保留。sysstat smallint 内部状态信息。indexdel smallint 保留。refdate datetime 留作以后使用。version int 留作以后使用。deltrig int 保留。instrig int 保留。updtrig int 保留。seltrig int 保留。category int 用于发布、约束和标识。cache smallint 保留。
注:关于SQLserver删除某数据库中所有表实现思路的内容就先介绍到这里,更多相关文章的可以留意
代码注释