如何快速的清空一张表?

baifu 2004-04-26 01:51:41
用While循环逐条删除每一个记录,显然不能适用于较大的表,那么用什么语句能直接清除一张表里的所有的记录呢?
...全文
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
荣爵 2004-04-27
  • 打赏
  • 举报
回复
???
fangjinjun 2004-04-26
  • 打赏
  • 举报
回复
做一张同样的表,覆盖,如果是SQLSERVER就删除表再创建
killxtt 2004-04-26
  • 打赏
  • 举报
回复
TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。

语法
TRUNCATE TABLE name

参数
name

是要截断的表的名称或要删除其全部行的表的名称。

注释
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表


另外,用delete的时候,可以直接写成delete tablename,不用加from
ihihonline 2004-04-26
  • 打赏
  • 举报
回复
如果不是SQL Server呢?
楚人无衣 2004-04-26
  • 打赏
  • 举报
回复
和summe一起发的,为什么我的老在后面 :(
楚人无衣 2004-04-26
  • 打赏
  • 举报
回复
Agree with DragonBill(月满西星),这个最快
summe 2004-04-26
  • 打赏
  • 举报
回复
truncate table tablename
在sql server服务器中效率很高,不要用delete语句,尤其在做效率优化时,尽可能不用where条件
guozhanfu 2004-04-26
  • 打赏
  • 举报
回复
delete from table1
qingenerp 2004-04-26
  • 打赏
  • 举报
回复
如果数据不是很多,直接delete from tablename即可
如果数据特别多,可以drop table tabelname
再create table tablename
(
field1 varchar(20) not null primary key,
field2 int null,
...
)
zhlwyy 2004-04-26
  • 打赏
  • 举报
回复
Drop;
DragonBill 2004-04-26
  • 打赏
  • 举报
回复
truncate table tablename
qingenerp 2004-04-26
  • 打赏
  • 举报
回复
delete from table1
ihihonline 2004-04-26
  • 打赏
  • 举报
回复
Access : delete * from tablename;
SQL Server and Oracl: delete from table name
fim 2004-04-26
  • 打赏
  • 举报
回复
delete from table1 where 条件

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧