SQLite3 delete限制删除行数的问题

QT SQLite3分页删除问题 terminal实验 场景:我打算在QT SQlite3中使用分页删除操作。即delete 搭配limit。 如下的例子使用limit、offet SQL关键字来实现分页查询。 在terminal中实验: sqlite> select * from test; 1|10 2|20 3|30 sqlite> select * from test order by va... 阅读详情
分类: SQLITE

    好久没来了,最近老是开会,也没机会学习,还好工作一步步步入正规,公司管理越来越规范化,最近又开始计划下一步的工作了。
    用到了sqlite3数据库,这个问题本来很令我困惑的,一问同事,又轻而易举的解决了,太佩服他了,要好好努力了,自己知道的这么少。哎,先把今天的收获说一下。
    解决delete限制删除行数的办法。
    在sqlite3的官方网站上的delete语句只有这一行显示:
sql-statement ::=

DELETE FROM [database-name .] table-name [WHERE exp

   所以我不知道该怎么做了,因为只给我一个删除行数,没有限制条件我不知道该怎么做了,“程序是人写的”,必定会有解决的办法,想法是关键,在没有给限制条件的情况下,必定是按时间插入的,所以就可以把它作为默认条件。

delete from 表名 where rowid in (select rowid from log order by Time limit 条数);

   这里要介绍一下rowid。rowid是从oracle8i开始的概念。

迅速查询Oracle9i Database Online Documentation(Release 2 (9.2)),文档上对ROWID和ROWNUM的解释如下:

   首先ROWID是一个伪列,它在数据库中表示一个列的物理地址。是随机生成的。在Oracle9i 中ROWID包含如下一些信息以唯一确定表里面的每一行:
   1.对象(table)的数据对象号。
   2.datafile 中哪一个data block。
   3.data block 中的哪一行(first row is 0)。
   4.哪一个数据文件(first file is 1).文件号和表空间相关
   通常,一个ROWID用来唯一标识数据库中的一行。但是以聚集表方式存储在统一个cluster中的不同表可以有相同的ROWID.
ROWID的几种重要应用
   1.快速访问一行。
   2.你能通过过ROWID知道表里面的每一行是怎么存储的。
   3.它们唯一的标识表中的每一行。
   你不能把ROWID作为你表的primary key.如果用Import or Export程序,它的ROWID将会改变。如果你删除一行,Oracle可能就会把这一ROWID分配给其他的新插入的行。
    虽然你在查询中可以伪列ROWID,但他们并不真正存储在数据库中,所以你不能对ROWID进行INSERT,UPDATE,DELETE 操作。

  
ROWNUM
    

   ROWNUM用来表示一个查询语句所返回行的顺序,第一个满足where条件的返回行的ROWNUM值将被赋予1,第二个是2,依此类推。你可以使用ROWNUM来限制所返回的行的数量。
    如果你在带有使用ROWNUM查询语句后跟ORDER BY的话,查询结果中ROWNUM的顺序可能不会被打乱,而不是按照从小到大的顺序排列。
    如果你在子查询中用ORDER BY 先排序,然后在外存查询使用ROWID的话,ROWNUM将会按照ORDER BY 后的顺序从小到大给每行从1开始分配一个ROWNUM。
    最后注意这个例子:
    SELECT * FROM employees WHERE ROWNUM > 1;
    因为ROWNUM是给第一个返回的行分配1,但每次返回后使where 条件都为假。所以这个查询不能查处任何结果。

  关于ROWNUM的几个查询测试:
 SQL> select rownum,* from dba_tables where rownum > 10 and rownum < 20
                  
ERROR at line 1:
ORA-00936: missing expression

SQL> select rownum,table_name from dba_tables where rownum between 10 and 20;
no rows selected


SQL> select rownum,table_name from dba_tables where rownum > 10 and rownum < 20;
no rows selected

SQL>  select rownum,table_name from dba_tables where rownum > 10;

no rows selected


SQL>  select rownum,table_name from dba_tables where rownum < 20;

    ROWNUM TABLE_NAME
---------- ------------------------------
         1 IND$
         2 FILE$
         3 UNDO$
         4 CLU$
         5 BOOTSTRAP$
         6 ICOL$
         7 FET$
         8 CDEF$
         9 CON$
        10 UET$
        11 TAB$

    ROWNUM TABLE_NAME
---------- ------------------------------
        12 OBJ$
        13 PROXY$
        14 COL$
        15 USER$
        16 TS$
        17 CCOL$
        18 SEG$
        19 UGROUP$

19 rows selected.

SQL> select distinct rownum, table_name  from dba_tables where rownum  < 20;

Same result as above (19 rows)


SQL> select sum(rownum), tablespace_name from dba_tables where rownum < 20 group by tablespace_name;
SUM(ROWNUM) TABLESPACE_NAME
----------- ------------------------------
        190 SYSTEM
参考:http://www.adp-gmbh.ch/ora/sql/rownum.html
Sqlite嵌入式内存数据库的优化 0. 场景及问题   目前网关项目在使用Sqlite的数据库存储数据,但是我们使用的方式和一般的数据库使用有区别,导致出现了两个问题: Sqlite3占用内存迅速增长,这种增长是cat /proc/fd号/statm 的显示增长,区别于: sqlite3内存增长原因数据库缓存导致的增长。 数据删除时间过长,影响了其他业务;   一般使用方式是需要数据库存储或查询数据时,使用sqlite3_open()打开数据库,使用完毕后sqlite3_close()关闭数据库。   我们项目使用的方式是一次使用sql 阅读详情

相关推荐

oracle删除数据方法。

oracle通过游标批量删除数据方法,对于大批量数据的删除比较有帮助。

delete限制删除行数的问题

delete限制删除行数的问题 好久没来了,最近老是开会,也没机会学习,还好工作一步步步入正规,公司管理越来越规范化,最近又开始计划下一步的工作了。    用到了sqlite3数据库,这个问题本来很令我困惑的,一问同事,又轻而易举的解决了,太佩服他了,要好好努力了,自己知道的这么少。哎,先把今天的收获说一下。    解决delete限制删除行数的办法。    在sqlite3的官方

vampire的专栏 6380

2.实体机安装TrueNAS 方法

访问不了可以使用以下连接:提取码:0927。

Unofficial_user的博客 7431

通用表表达式实现 UPDATE/DELETE LIMIT

本文介绍了一种使用通用表表达式(WITH子句)实现 UPDATE LIMIT 和 DELETE LIMIT 语句的方法,从而限定更新和删除的行数。这是一种通用的方法,适用于各种数据库,包括 Oracle、SQL Server、PostgreSQL、MySQL 以及 SQLite 等。

Tony.Dong的专栏 2256

【雷达成像实战】RD、CS、RMA算法对比与Matlab实现:从信号处理到高清成像

本文深入对比了雷达成像中三种核心算法:经典的距离多普勒算法(RD)、基于稀疏重建的压缩感知算法(CS)以及高精度的快速多通道获取算法(RMA)。通过详细的Matlab实战代码,从原理拆解到实现步骤,分析了各自在计算效率、成像精度、数据需求和适用场景上的优劣,为工程选型与算法实践提供了清晰指南。

weixin_29095587的博客 447

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 528

使SQLite的UPDATE/DELETE支持LIMIT子句

SQLite从版本3.6.4开始支持UPDATE/DELETE使用LIMIT子句,可以使用宏SQLITE_ENABLE_UPDATE_DELETE_LIMIT进行编译控制。 但是,从http://www.sqlite.org/download.html上直接下载得到的amalgamation代码,是不支持这个功能的。我们必须使用代码未被合并的完整代码生成我们自己的amalgamation代码

foolishlee的博客 4818

Qt界面美化-飞扬青云自绘控件插件的使用-避免采坑

1、先上一个集成到QtCreater中的效果图: 2、飞扬青云自绘控件插件下载地址:https://gitcode.net/mirrors/feiyangqingyun/qucsdk?utm_source=csdn_github_accelerator 3、集成插件到QtCreater中的方法: (1)、查看自己使用的QtCreater的版本信息,我的:Qt 5.15.2 MSVC2019 64位 (2)插件下载下来后工程预览: 我选择msvc版本的SDK,打开找到匹配的SDK:...

小米的修行之路 2791

三种批量删除PLSQL写法效率的比对

我们有一个重要的旧系统,最近夜维出现了一些问题,夜间执行5小时未完成,为了不影响业务,只能早上高峰期之前,DBA手工kill夜维进程。这一个夜维程序采用了PLSQL写的存储过程,通过数据库job定时启动执行。存储过程我很少使用,借着这次机会,补习了下,这个存储过程中的逻辑比较简单,依次删除若干张业务表,每张表删除的逻辑相同,为了便于说明,模拟了下删除一张表的逻辑,示例如下, TBL_CUSS表三个

bisal的专栏 9803

基于深度学习的心律失常的自动分类

基于深度学习的心律失常的自动分类 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 心律失常的危害与检测的重要性 心律失常是一种常见的心血管疾病,严重威胁着人们的健康和生命。据统计,全球每年有数百万人因心律失

AI架构师小马 1139

基于STM32设计的盲人智能导盲杖

本设计基于STM32单片机,开发了一种面向视障人群的智能导盲杖系统。系统以STM32F103C8T6为核心控制器,集成了超声波测距、语音提示、环境光检测、GPS定位及4G通信等多种功能模块。

642

SQLite简单介绍

SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口。SQLite第一个Alpha版本诞生于2000年5月。

qq_45726327的博客 6529

英飞凌Tricore实战系列导读

笔者结合项目应用经验对Tricore MCU的开发及应用经验进一步总结,成人达己,渡己渡人。

initiallizer的博客 3790

Python SQLite:在表中删除数据 (`DELETE` 子句) 深度解析

摘要: 本文详细介绍了SQLite中DELETE语句的使用方法和注意事项,重点强调数据安全性和外键约束。主要内容包括: 基础语法:DELETE FROM table WHERE condition,强调WHERE子句的重要性以避免误删全部数据 条件筛选:详细说明比较运算符、逻辑运算符、范围/集合运算符等在删除条件中的应用 外键约束:讲解如何启用外键约束及四种级联删除行为(CASCADE/SET NULL/RESTRICT/SET DEFAULT) Python操作:演示通过sqlite3模块执行安全删除(参

weixin_42107409的博客 1431

Doris磁盘空间管理(生命周期管理、清理磁盘空间方法)

在进行数据仓库开发时,比较头疼的是历史数据不删除,磁盘空间不断增长,如果磁盘空间不足时,spark调度任务写入时就会报错。

大模型大数据攻城狮的专栏 1717

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

sqlite3

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中本文章介绍在Linux环境下使用SQLite3,对于SQLite 命令的学习可以参考文章。

yoyo勰的博客 1177

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改)

本篇,我们将学习如何使用SQL语句进行数据更新(增加、删除、修改)。

孤生i的博客 6793

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 随笔(一)Sqlite 不支持order limit 直接删除

开发中遇到一个问题:一段SQL代码,怎么都无法删除数据: “DELETE FROM table_name ORDER BY sort_column LIMIT 3”   这应该是一个比较普通的语句,但是android没有任何效果,百思不得其解,最后发现这里写了问题的原因stackoverflow    大意是说android在使用sqlite时侯关闭了 SQLITE_ENABLE_UPDATE

jefferyyangkai的专栏 2500

SQLite3使用小贴士

一、limit、offset等使用注意事项 二、Sqlite3中去掉多余的重复记录 三、删除特定行 四、内存泄露

前行 1390

SQLite Truncate Table: 完全删除表中的数据

是SQLite中一种强大的数据库操作,可以快速删除表中的所有数据。了解其语法、用途和与DELETE的区别,对于数据库管理员和开发者来说至关重要。本文详细介绍了SQLite中的语句,包括其语法、用途、与DELETE的区别以及实际操作示例。希望本文能帮助您更好地理解和使用操作。

csbysj2020的博客 681

SQLite3语法(一)

csv 逗号分隔的值column 左对齐的列html HTML 的 代码insert TABLE 表的 SQL 插入(insert)语句line 每行一个值list 由 .separator 字符串分隔的值tabs 由 Tab 分隔的值tcl TCL 列表元素同时,还有数据的亲和类型,大家可以通过:【https://www.runoob.com/sqlite/sqlite-data-types.html】来了解 2、 导出 3、 附加 连接一中对于附加数据库的数据更新也同步回了原数据库的......

一个专注于机器学习基础与实战的技术博客,内容涵盖算法推导、模型实现、数学原理与代码实践。用通俗的语言解析复杂概念,记录学习过程中的思考与总结,适合机器学习爱好者和从业者参考。 2281

安卓获取本地时间插入sqlite_花费1天多终于搞定了sqlite的SQLITE_ENABLE_UPDATE_DELETE_LIMIT...

课程项目中部分功能的数据存储用到了SQLite(轻便),一些地方有在update加limit子句的需求,SQLite是可以支持在update和delete语句中加limit子句的,在官网也查到了这个功能:Optional LIMIT and ORDER BY Clauses​www.sqlite.org但是在使用Exposed框架连接SQLite时,执行含有limit子句的update时报错:Ex...

weixin_29119033的博客 236

Android Room(SQLite) too many SQL variables异常

在使用 Room 或其他基于 SQLite 的 ORM 框架时,批量操作如IN或NOT IN查询可能会触发异常。该问题源于 SQLite 的IN和NOT IN子句会将数据转换为的形式,而 SQLite 对可绑定的参数数量是有限制的。在 Android 系统中,这一限制是由系统内置的 SQLite 版本所固化,无法直接修改,除非你自行编译并替换 SQLite 库。因此,当查询的条件过多时,超过了这个限制,就会抛出该异常。

葫芦娃 2679

如何在SQLite-Vec中实现虚拟表外键级联删除的完整指南

SQLite-Vec是一款轻量级的向量搜索SQLite扩展,支持在`vec0`虚拟表中存储和查询浮点型、int8和二进制向量。本文将详细介绍如何在SQLite-Vec项目中实现虚拟表外键级联删除功能,帮助开发者解决向量数据与关联表之间的引用完整性问题。 ## 虚拟表外键级联删除的基本概念 在SQLite数据库中,外键约束用于维护表之间的引用完整性。级联删除(CASCADE DELETE)是一种

gitblog_01015的博客 432

Sqlite3数据库

返回一个整数错误码。若返回 SQLITE_OK(值为 0),表示数据库连接成功关闭;其他非零值则对应具体的错误(例如存在未完成的事务、未释放的预处理语句等)分表策略:若单表数据超百万,按时间或业务拆分(如student_2023、student_2024):执行 SQL 语句(INSERT/UPDATE/DELETE/SELECT 等):db 是之前通过 sqlite3_open 系列函数成功创建的数据库连接句柄。索引会降低写入(INSERT/UPDATE/DELETE)效率,小表无需建索引。

2301_81517435的博客 1667

Python 如何操作 SQLite 数据库

SQLite 是一种轻型的关系型数据库管理系统,它支持 SQL 语言。它拥有小巧、快速、可靠、跨平台等特点,常用于移动设备、嵌入式系统和小型应用程序的开发。Python 是一种解释型、面向对象、动态数据类型的高级编程语言,适合于快速开发、简洁明了的代码编写。Python 通过 SQLite 模块来操作 SQLite 数据库,提供了非常简单、方便的接口,本文将从多个角度分析 Python 如何操作 SQLite 数据库。

2201_75362610的博客 8587
上一篇: wince下Ras拨号
下一篇: sqlserver创建服务器连接,及同构数据库同步问题
WaveYang
博客等级 码龄22年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值