当我们在sqlite表中插入一条记录时,它总是插入到表的末尾吗?或者,如果以前删除了记录,是否有可能在将记录添加到末尾之前先填充空白?
答案 0 :(得分:3)
SQLite与许多数据库一样,实际上并没有记录位置的概念(就典型用户而言),除了表会自动获得 rowid 将是一个通常增加1的唯一标识符(并非可以保证)。可以重新使用释放的 rowid 数字(如果使用了AUTOINCREMENT,则不能重复使用),但要等到使用了rowid 9223372036854775807后才能重新使用。此 rowid 通常是访问行(记录)的最有效方法。以下对 rowid 列SQLite Autoincrement进行了很多解释。
在定义表时,可以使用WITHROW ROWID(对于SQlite的最新版本),在这种情况下,将没有 rowid 列。
通常使用 rowid 列的别名。通过编码定义别名?整数主键(带有可选的AUTOINCREMENT关键字)。
如果要按特定顺序排列行,则在查询表时使用 ORDER BY 关键字。在这种情况下,结果集将排序。
尽管如此,它仍然可以像许多数据库一样尝试有效地管理存储,尽管可以使用VACUUM命令SQL As Understood By SQLite VACUUM或通过编译指示打开自动真空模式。