SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外。如下图:
通常情况下,rowid可以唯一的标记表中的每个记录(类似于Oracle的rownum)。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。即使插入失败,rowid也会被加一。所以,整个表中的rowid并不一定连续,即使用户没有删除过记录。
由于唯一性,所以rowid在很多场合中当作主键使用。在使用的时候,select * from tablename 并不能获取rowid,必须显式的指定。例如,select rowid, * from tablename 才可以获取rowid列。查询rowid的效率非常高,所以直接使用rowid作为查询条件是一个优化查询的好方法。如下:
注意:
但是 rowid 列作为主键,在极端情况下存在隐患。由于 rowid 值会一直递增,如果达到所允许的最大值 9223372036854775807 后,它会自动搜索没有被使用的值,重新使用,并不会提示用户。这时,使用 rowid 排序记录,会产生乱序,并引入其他的逻辑问题。所以,如果用户的数据库存在这种可能的情况,就应该使用 AUTOINCREMENT 定义主键,从而避免这种问题。使用 AUTOINCREMENT 设置自增主键,虽然也会遇到9223372036854775807 问题,但是它会报错,提示用户,避免产生 rowid 所引发的问题。
SQLite 数据库本身也提供了简单的管理工具,但是和 MySQL 类似,管理起来不是很方便。因此 SQLite 也诞生了很多可视化管理工具,下面是几个比较常用的工具:
SQLiteStudio是一个基于QT写的sqlite数据的可视化编辑和查看的开源软件软件,使用非常简单。官方地址 https://sqlitestudio.pl/index.rvt。软件截图如下:
SQLite Expert Professional是一款可视化的数据库管理工具,允许用户在 SQLite 服务器上执行创建、编辑、复制、提取等操作。SQLite Expert支持所有的图形界面的SQLite特征。它包括一个可视化查询生成器,一个SQL编辑与语法突出和代码自动完成,强大的table和view设计与导入导出功能。 软件截图如下:
Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。软件截图如下: