博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLite清空表并将自增列归零
阅读量:4315 次
发布时间:2019-06-06

本文共 998 字,大约阅读时间需要 3 分钟。

SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容。但SQLite不支持这个语句。

在SQLite中直接使用“DELETE FROM TableName”就可以了。

对于大多数DBMS来说,用DELETE不如用TRUNCATE 速度快,因为TRUNCATE 不用访问整个表,不用记录数据的变动。

SQLite虽然不支持TRUNCATE,但它对DELETE做了优化:

“When the WHERE is omitted(略去) from a DELETE statement and the table being deleted has no triggers(触发器), SQLite uses an optimization(优化) to erase the entire table content without having to visit each row of the table individually. This “truncate” optimization makes the delete run much faster.”

通常在清空表的时候,还需要把自增列归零。在SQLite中定义自增列的方法如下:

CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, ... );

当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。

这个表包含两个列:name和seq。name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当前序号加1)。

如果想把某个自增列的序号归零,只需要修改 sqlite_sequence表就可以了。

UPDATE sqlite_sequence SET seq = 0 WHERE name = 'TableName';

也可以直接把该记录删掉:

DELETE FROM sqlite_sequence WHERE name = 'TableName';

要想将所有表的自增列都归零,直接清空sqlite_sequence表就可以了:

DELETE FROM sqlite_sequence;

转载于:https://www.cnblogs.com/magicsky0/p/3803291.html

你可能感兴趣的文章
bzoj 1089: [SCOI2003]严格n元树
查看>>
mybatis 日期比较
查看>>
更新jdk
查看>>
string与StringBuilder之性能比较
查看>>
python3----练习题(购物车)
查看>>
IOS不错的学习资源特别是图片效果的处理上
查看>>
HDU 2072(字符串的流式操作,学习了)
查看>>
win10 vs2015源码编译opencv、opencv_contrib、Tesseract
查看>>
css取消a标签在移动端点击时的背景颜色
查看>>
Chart-template
查看>>
python获取参数列表
查看>>
bind,call,apply学习(一)
查看>>
从开始到结束以及我的尝试
查看>>
spring 部分配置内容备忘
查看>>
C# 读取配置文件方法
查看>>
Annotation(注解)
查看>>
MySQL(四)--练习题
查看>>
高效掌握C#第五回---猜单词游戏
查看>>
07-Java 中的IO操作
查看>>
uclibc,eglibc,glibc之间的区别和联系【转】
查看>>