SQLite数据表的rowid

本文章将介绍在SQlite数据库表中怎样去使用rowid。

SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外。如下图:

SQLite数据表的rowid

通常情况下,rowid可以唯一的标记表中的每个记录(类似于Oracle的rownum)。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。即使插入失败,rowid也会被加一。所以,整个表中的rowid并不一定连续,即使用户没有删除过记录。

由于唯一性,所以rowid在很多场合中当作主键使用。在使用的时候,select * from tablename 并不能获取rowid,必须显式的指定。例如,select rowid, * from tablename 才可以获取rowid列。查询rowid的效率非常高,所以直接使用rowid作为查询条件是一个优化查询的好方法。如下:

SQLite数据表的rowid

注意:

但是 rowid 列作为主键,在极端情况下存在隐患。由于 rowid 值会一直递增,如果达到所允许的最大值 9223372036854775807 后,它会自动搜索没有被使用的值,重新使用,并不会提示用户。这时,使用 rowid 排序记录,会产生乱序,并引入其他的逻辑问题。所以,如果用户的数据库存在这种可能的情况,就应该使用 AUTOINCREMENT 定义主键,从而避免这种问题。使用 AUTOINCREMENT 设置自增主键,虽然也会遇到9223372036854775807 问题,但是它会报错,提示用户,避免产生 rowid 所引发的问题。

SQLite常用工具

SQLite 数据库本身也提供了简单的管理工具,但是和 MySQL 类似,管理起来不是很方便。因此 SQLite 也诞生了很多可视化管理工具,下面是几个比较常用的工具:

SQLiteStudio

SQLiteStudio是一个基于QT写的sqlite数据的可视化编辑和查看的开源软件软件,使用非常简单。官方地址 https://sqlitestudio.pl/index.rvt。软件截图如下:

SQLite数据表的rowid

SQLite Expert Professional

SQLite Expert Professional是一款可视化的数据库管理工具,允许用户在 SQLite 服务器上执行创建、编辑、复制、提取等操作。SQLite Expert支持所有的图形界面的SQLite特征。它包括一个可视化查询生成器,一个SQL编辑与语法突出和代码自动完成,强大的table和view设计与导入导出功能。 软件截图如下:

SQLite数据表的rowid

Navicat premium

Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。软件截图如下:

SQLite数据表的rowid

成熟不是人的心变老,而是泪在眼眶里打转还能微笑。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号