快速删除数据库中所有表中的数据
今天又学到一招,可以快速删除数据库中所有的用户表中的数据。我是个菜鸟,望各位大神多多指教
select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc;
该条语句执行之后会将数据库中所有的表都查询出来,复制出来之后执行truncate语句即可
sysobjects
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名。 |
Id | int | 对象标识号。 |
xtype | char(2) |
对象类型。可以是下列对象类型中的一种:
C = CHECK 约束 |
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 约束 |
userstat | smallint | 保留。 |
sysstat | smallint | 内部状态信息。 |
indexdel | smallint | 保留。 |
refdate | datetime | 留作以后使用。 |
version | int | 留作以后使用。 |
deltrig | int | 保留。 |
instrig | int | 保留。 |
updtrig | int | 保留。 |
seltrig | int | 保留。 |
category | int | 用于发布、约束和标识。 |
cache | smallint | 保留。 |
truncate和不带where子句的delete, 以及drop都会删除表内的数据
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
转载于:https://www.cnblogs.com/zheyidetianshi/archive/2012/02/18/deletealltablefromonedatabase.html
快速删除数据库中所有表中的数据相关推荐
- oracle 表字段顺序_Oracle数据库如何修改表中字段顺序
Oracle数据库如何修改表中字段顺序 发布时间:2020-07-09 15:53:15 来源:亿速云 阅读:166 本篇文章给大家分享的是有关Oracle数据库如何修改表中字段顺序,小编觉得挺实用的 ...
- mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...
[单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...
- 如何从Oracle数据库中的表中获取列名(字段名)列表?
如何从Oracle数据库中的表中获取列名(字段名)列表? 目录 如何从Oracle数据库中的表中获取列名(字段名)列表? #示例一 #示例二 示例三: #示例一 可以获取: table_name:表名 ...
- MySQL数据库在众多表中对表名的查询及预处理存储过程(变量做表名)
以下的文章主要介绍的是MySQL数据库在众多表中进行表名与字段名的查询的实际操作步骤,以及对实现其查询所要用到的SQL 语句的介绍,还有两个实际解决方案的描述,以下就是文章的主要内容描述. 在MySQ ...
- mysql 批量替换 所有表_[收藏]批量替换一个数据库中所有表中所有记录
/***********批量替换一个数据库中所有表中所有记录************/ declare @delStr nvarchar(500) set @delStr='这里是要替换的字符' /* ...
- 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...
- 记录一个删库跑路的技巧(如何快速删除数据库下面的所有表)
如何快速删除数据库下面的所有表 先说sql语句,耐不住性子往下看的直接在数据库执行这个就可以~ 然后你会获得所有的删除sql语句 然后就是CV大法 把这两句(打个比方)执行一下~ 库就空了!你千万不要 ...
- mysql向表中插中文显示,针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav...
针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav 针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决:java.sql.SQLException: Incorrect ...
- bs4主要知识点介绍及实例解析---利用bs4爬取伯乐在线(分别存储在数据库和xls表中)
bs4主要知识点介绍及实例讲解 bs4 是第三方解析html数据的包 from bs4 import BeautifulSoup lxml 解析读取html的第三方解释器,解析速度快,底层通过c实现 ...
最新文章
- 几行代码完成动态图表绘制 | Python实战
- Quartz.Net实现作业定时调度详解
- 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神
- iOS - 实现语言本地化/国际化
- MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期
- 大学生眼中的对方,哈哈
- php mysql帮助类,基于PHP的MYSQL操作类
- 知识图谱组队学习Task02——项目介绍
- 【database】oracle触发器基础
- Objective-C中 copy, tetain, assign , readonly , readwrite, nonatomic区别
- oracle主要的动态视图与基表的对应关系
- clousx6机器人怎么导入词库_clousx6词库编程从零入门:3
- 系统防御工程v0.2
- 产品经理项目流程(四)——需求文档
- 人之最美,纯朴初心,有所不为
- 修改域名指向的服务器,让域名指向服务器
- 过拟合与欠拟合及解决方法
- 华为mate40计算机,华为Mate40兼容欧米多手机电脑,秒变笔电轻办公
- 移动硬盘提示磁盘结构损坏且无法读取怎么办
- Windows版Redis和Redis Desktop Manager安装