mssql 删除数据库中所有的表

<pre name="code" class="html">针对于此操作大家可以去先去了解一下系统表sysobjects(有上篇博客有写) ,和drop ,truncate,delete的区别。
------------删除所有表的外键约束(删除表结构(drop)的时候,删除数据(truncate;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 next from c1 into @c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch next from c1 into @c1
end
close c1
deallocate c1

--------------------删除所有表--------------------------

use 数据库名
GO
declare @sql varchar(8000)
while (select count(*) from sysobjects where type='U')>0
begin
SELECT @sql='drop table ' + name
FROM sysobjects
WHERE (type = 'U')
ORDER BY 'drop table ' + name
exec(@sql)
end

<pre name="code" class="html">    1. truncate 和 delete 只删除数据不删除表的结构(定义)    drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid (无效)状态。   

    2. truncate 删除所有记录,重置表(最明显的是自动id归零),删除数据时不会备份;delete 删除记录,自动id继续delect删除时会有备份 是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对 truncate 使用ROLLBACK命令。 

    3.小心使用 drop 和 truncate,用delete并且带上where条件,当然客户那大多都会有备份三者其实没有优先级,适当的时候用适当的方法

  # 想删除部分数据行用 delete,注意带上where子句.
  # 想删除表,当然用 drop
  # 想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
  # 如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
				
时间: 2024-11-01 12:17:21

mssql 删除数据库中所有的表的相关文章

sqlserver删除数据库中所有的表

sqlserver删除数据库中所有的表 ------------------------------------------------------------------------------------------- 打开Sql server management studio并新建一个查询,在打开的XXX.SQL文件中输入: exec sp_MSforeachtable @command1='Delete from ?' exec sp_MSforeachtable @command1

mysql 快速生成删除数据库中所有的表的语句

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'mydb'; mydb换成你想删除的数据库的名字这样可以生成一个批量处理的sql语句,你需要再运行一次这个结果集就可以删除所有的表而不删除数据库了 原文地址:https://www.cnblogs.com/xzlive/p/9914337.html

删除数据库中所有存在表的数据

create or replace function clear_table_data() returns text as $$ declare select_result record; table_name varchar; begin for select_result in select relname as tablename from pg_class c where relkind = 'r' and relname not like 'pg_%' and relname not

MySQL删除数据库中所有表方法

MySQL删除数据库中所有表方法技术 maybe yes 发表于2015-01-23 12:16 原文链接 : http://blog.lmlphp.com/archives/66  来自 : LMLPHP后院 通过使用 CONCAT 函数将数据库表名称和需要执行的 SQL 语句连接起来,输出在控制台:然后从控制台复制这些内容,粘贴,执行,OK.table_schema 条件为需要操作的数据库名称,参考 SQL 语句如下: SELECT CONCAT('DROP TABLE IF EXISTS 

批量删除指定数据库中的指定表

-- ---------------------------------------------------------------------------------------------------------- -- -- 1.查询:得到批量删除指定数据库中的指定表: -- 2.执行:将得到的结果复制下来,再重新执行: -- SELECT CONCAT( 'drop table ', table_name, '; ' ) FROM information_schema. TABLES W

快速删除数据库中所有表中的数据

原文:快速删除数据库中所有表中的数据 select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc; 该条语句执行之后会将数据库中所有的表都查询出来,复制出来之后执行truncate语句即可 sysobjects 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中占一行.只有在 tempdb 内,每个临时对象才在该表中占一行. 列名 数据类型 描述 name sy

MySQL 删除数据库中重复数据(以部分数据为准)

delete from zqzrdp where tel  in (select min(dpxx_id) from  zqzrdp  group by tel  having count(tel)>1); 执行,报错 异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷. 难倒只能分步操作,蛋疼 以下是网友写的,同样是坑爹的代码,我机器上运行不了. 1. 查询需要删除的记录,会保留一条记录.  代码如下 复制代码 select a.id,a.subject,

Java删除数据库中的数据

1:删除数据库中数据表中的数据同样也是一个非常用的技术,使用executeUpdate()方法执行用来做删除SQL的语句可以删除数据库表中的数据 2:本案例使用Statement接口中的executeUpdate()方法,删除数据库中users表中id为1的用户信息 1 package com.ningmeng; 2 3 import java.sql.*; 4 /** 5 * 6 * @author biexiansheng 7 * 8 */ 9 public class Test06 { 1

如何删除数据库中的重复记录?

一.题外篇 今天很悲催啊,给用户数据做datapatch的时候,每个月的数据多导入了一份,瞬间惊出一身冷汗... 这可是产品环境,要是被老板知道了可就死定了,赶紧去掉重复的记录,同时写下下面的文章以备后用. 二.准备篇 1. 先创建一张学生表student: create table student( id varchar(10) not null, name varchar(10) not null, age number not null ); 2. 插入几条数据到表student: ins