Q6. What is a primary key, and what's special about INTEGER PRIMARY KEY?
A primary key uniquely identifies each row and can't be null or duplicated. In SQLite, declaring a column INTEGER PRIMARY KEY does something extra: that column becomes an alias for the table's built-in rowid.
That alias makes lookups by that key very fast, because the rowid is how rows are physically stored. If you leave it out on insert, SQLite fills it in automatically with the next integer.
CREATE TABLE items (
id INTEGER PRIMARY KEY, -- alias for rowid, auto-assigned
label TEXT
);
INSERT INTO items (label) VALUES ('first'); -- id becomes 1 automatically