Database / SQLite Interview questions
What is the ROWID in a SQLite table?
Every ordinary SQLite table (unless explicitly declared WITHOUT ROWID) has a hidden
rowid column — a 64-bit signed integer that uniquely identifies each row and serves as the
key of the table's underlying B-tree, regardless of whether you've defined your own primary key.
SELECT rowid, name FROM person; -- rowid is accessible even if not explicitly declared
If a table declares an INTEGER PRIMARY KEY column, that column becomes an alias for
rowid itself (same underlying value, just referenceable by your chosen column name), which is
why looking a row up by that column is exceptionally fast — it's a direct B-tree key lookup, not a
secondary index traversal. Tables declared WITHOUT ROWID skip this hidden column entirely,
storing rows keyed directly by their declared primary key instead.
More Related questions...