• 删除数据库中所有表


    一个数据库中可能有很多表,而我想全部删除,如果一个一个手动删除太麻烦而且浪费时间。
    涉及两个问题:1.如何知道这个数据库里有哪些表?2.如何把这些表名读取出来?
    这两个问题解决了,就方便多了。
    第一个问题:
    select name from sysobjects
    where xtype='U'

    sysobjects表
    在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。

    xtype='U'表示用户表

    第二个问题:
    可以把表名读取出来放到一个表变量中,然后再利用while 循环去drop table

       1:  declare @tabletemp TABLE (ID INT identity(1,1),NAME NVARCHAR(50));
       2:  declare @i int;
       3:  set @i=1;
       4:  declare @mx int;
       5:   
       6:  insert into @tabletemp
       7:  SELECT NAME
       8:  from sysobjects where xtype='U';
       9:   
      10:  set @mx=(select MAX(id) from @tabletemp);
      11:   
      12:  while (@i<=@mx)
      13:  begin
      14:  declare @name nvarchar(50)
      15:  select @name=name from @tabletemp where ID=@i
      16:  --truncate table @name 这样写是错误的,这样的话就需要@name是表类型变量
      17:  exec('truncate table '+@name)
      18:  exec('drop table '+@name)
      19:  set @i=@i+1
      20:  end
      21:   

    也许使用游标更方便处理

    使用游标

       1:  declare @cur cursor,@name nvarchar(50);
       2:  set @cur=cursor for select name from sysobjects where xtype='U'
       3:   
       4:  open @cur
       5:  fetch next from @cur into @name
       6:   
       7:  while @@FETCH_STATUS=0
       8:  begin
       9:  exec ('truncate table '+@name)
      10:  exec ('drop table '+@name)
      11:  fetch next from @cur into @name
      12:  end
      13:   
      14:  close @cur
      15:  deallocate @cur

    开始才网上搜到的是使用游标的方法,试着实现了。

    然后试着用其他方法实现(没想到会成功),其实就是山寨下游标的思路,感觉没游标的简单。唯一惊喜也许就是使用了表变量,之前只是看过oracle中有表变量。

    成功固然重要,但也不要刻意在乎,享受下一路上意外的得到!

  • 相关阅读:
    Android底层开发之红外遥控驱动移植
    OC的动态继承编译机制
    Android 的Recovery机制
    JStorm中的并行( parallelismction )介绍
    windows编译ffmpeg出现gcc is unable to create an executable file 的普通情况
    Yii2高速构建RESTful Web服务功能简单介绍
    APK防反编译技术
    Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)
    JSP简单练习-上传文件
    ios+openflow 问题
  • 原文地址:https://www.cnblogs.com/cnmarkao/p/3831746.html
Copyright © 2020-2023  润新知