SQLite 以單一檔案儲存整個資料庫,無伺服器進程、無安裝配置、支援 ACID 交易,廣泛用於行動裝置、桌面應用、IoT 裝置、瀏覽器內建儲存。本文涵蓋 Windows/Linux/macOS 安裝、建庫建表、CRUD 操作、實用點命令、備份還原全流程。
| 平台 | 安裝方式 |
|---|---|
| Windows | 官網下載 sqlite-tools-win32-x86-*.zip,解壓並加入 PATH |
| Linux (Debian/Ubuntu) | sudo apt-get install sqlite3 libsqlite3-dev |
| Linux (RHEL/CentOS) | yum install sqlite3 sqlite3-devel |
| macOS | 系統預裝(sqlite3 指令即可用) |
$ sqlite3 test.db
SQLite version 3.45.0
sqlite> CREATE TABLE mytable (
id INTEGER PRIMARY KEY,
value TEXT
);
sqlite> INSERT INTO mytable (id, value) VALUES (1, 'Micheal');
sqlite> INSERT INTO mytable (value) VALUES ('Francis'); -- id 自動遞增
sqlite> SELECT * FROM mytable;
1|Micheal
2|Francis
注意:至少建立一個表/視圖,資料庫檔案才會寫入磁碟。
| 命令 | 功能 | 範例 |
|---|---|---|
.tables | 列出所有表/視圖 | .tables |
.schema [table] | 顯示建表 SQL | .schema mytable |
.mode column | 欄對齊顯示 | .mode column |
.headers on | 顯示欄位名 | .headers on |
.separator ',' | 設定分隔符 | .separator , |
.output file.csv | 導出結果到檔案 | .output data.csv |
.import file.csv tbl | 從 CSV 匯入 | .import data.csv newtbl |
.dump | 導出完整 SQL | .dump > backup.sql |
.read file.sql | 執行 SQL 檔 | .read backup.sql |
-- Create(建表已示範)
-- Read
SELECT * FROM mytable WHERE id = 1;
-- Update
UPDATE mytable SET value = 'Updated' WHERE id = 1;
-- Delete
DELETE FROM mytable WHERE id = 1;
-- ALTER TABLE(SQLite 3.35+ 支援 DROP COLUMN)
ALTER TABLE mytable ADD COLUMN email TEXT DEFAULT '' NOT NULL;
CREATE INDEX idx_value ON mytable(value);CREATE VIEW v AS SELECT * FROM mytable WHERE id > 10;NULL、INTEGER(1-8 bytes)、REAL(8 bytes IEEE)、TEXT(UTF-8/16)、BLOB。型別親和性而非強制型別。# 線上熱備份(無需停機)
sqlite3 mydb.db .dump > backup.sql
# 或使用備份 API(更安全)
sqlite3 mydb.db ".backup backup.db"
# 還原
sqlite3 mydb.db < backup.sql
# 或
sqlite3 mydb.db ".restore backup.db"
PRAGMA synchronous = OFF; PRAGMA journal_mode = MEMORY;(風險:斷電可能損壞)PRAGMA synchronous = FULL; PRAGMA journal_mode = WAL;(WAL 模式讀寫並行)CREATE INDEX idx_cover ON t(a,b) INCLUDE (c); (3.38+)VACUUM; 整理碎片、壓縮檔案。sqlite-dll-win32-x86,用 lib.exe /DEF:sqlite3.def /OUT:sqlite3.lib 產生 import library。sqlite3.c + sqlite3.h 加入專案編譯(官方建議)。sqlite3_open、sqlite3_prepare_v2、sqlite3_step、sqlite3_column_*、sqlite3_finalize、sqlite3_close。sqlite3_bind_text、sqlite3_bind_int64 等,**務必使用參數化查詢防注入**。SQLite 以「一個檔案、零配置、全功能」重新定義了嵌入式資料庫的標準。掌握本文安裝、CLI 操作、SQL 語法、備份還原、效能調優與嵌入式開發要點,即可在任何專案中輕鬆驅動輕量級資料存儲需求。