SQLite Cheatsheet - SQLite Database Command Reference
For developers who need a zero-config, single-file, fast-enough embedded database. SQLite needs no server or credentials; a single .db file moves anywhere. The trade-off is that only one writer is allowed at a time across the whole file, so concurrent writes need WAL mode and a busy timeout. By the end you can create databases and tables, constrain data with indexes and constraints, import and export CSV, and enable WAL to improve concurrent read/write behavior.
Database Connection & Basics 6
sqlite3 file.db.open file.db.databases.tables.quit.helpTable Operations 6
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);DROP TABLE IF EXISTS users;ALTER TABLE users ADD COLUMN email TEXT;CREATE TABLE backup AS SELECT * FROM users;CREATE TEMP TABLE temp_data (id INT);.schema usersData CRUD 7
INSERT INTO users (name, age) VALUES ('Tom', 25);INSERT INTO users (name, age) VALUES ('Tom', 25), ('Jerry', 30);SELECT * FROM users;UPDATE users SET age = 26 WHERE name = 'Tom';DELETE FROM users WHERE name = 'Tom';REPLACE INTO users (id, name, age) VALUES (1, 'Tom', 26);INSERT INTO users (id, name) VALUES (1, 'Tom') ON CONFLICT(id) DO UPDATE SET name = excluded.name;Advanced Queries 8
SELECT * FROM users WHERE age > 18;SELECT * FROM users ORDER BY age DESC, name ASC;SELECT status, COUNT(*) FROM users GROUP BY status;SELECT status, COUNT(*) FROM users GROUP BY status HAVING COUNT(*) > 5;SELECT * FROM users LIMIT 10 OFFSET 20;SELECT u.name, o.total FROM users u JOIN orders o ON u.id = o.user_id;SELECT DISTINCT city FROM users;SELECT COUNT(*), AVG(age), MAX(age), MIN(age) FROM users;Indexes & Constraints 6
CREATE INDEX idx_users_name ON users(name);CREATE UNIQUE INDEX idx_users_email ON users(email);DROP INDEX IF EXISTS idx_users_name;CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, age INT DEFAULT 0);CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INT REFERENCES users(id));CREATE TABLE products (id INT, price REAL CHECK(price > 0));Transactions & Locking 7
BEGIN TRANSACTION;COMMIT;ROLLBACK;SAVEPOINT sp1;ROLLBACK TO sp1;RELEASE SAVEPOINT sp1;PRAGMA journal_mode=WAL;Import/Export & Tools 6
.import --csv data.csv my_table.output dump.sql.dump.read dump.sqlVACUUM;ANALYZE;Utility Functions & PRAGMA 6
PRAGMA table_info(users);PRAGMA index_list(users);PRAGMA integrity_check;SELECT datetime('now');SELECT strftime('%Y-%m-%d', 'now');SELECT length('hello'), typeof(42), randomblob(16);Tips
- SQLite is a zero-configuration database, no server process needed
- Use .dump for backup, VACUUM to reclaim space
- PRAGMA journal_mode=WAL significantly improves concurrent performance
- SQLite supports most SQL-92 standards but not RIGHT/FULL JOIN
- The .import command imports CSV files directly into tables
Official References
Each command links to its official documentation below, so you can verify the latest usage and read deeper.
Maintained by LaoHand
Publicly updated on Jul 21, 2026, continuously proofread against official docs.
Contact Us
Wrong command or description? Send us corrections, business inquiries or product feedback by email.
Contact Us