SQLite 是一款輕量級、高效能的嵌入式數據庫引擎,體積小巧、無需獨立服務進程,卻能支援 SQL92 標準的大部分特性,包含索引、約束、觸發器與視圖。它支援 ACID 事務,確保數據操作的原子性、一致性、隔離性與持久性,透過數據庫級的共享鎖與獨占鎖機制實現高併發讀寫控制。正因如此,SQLTE 成為內容管理系統(CMS)、移動應用與嵌入式設備的首選數據庫方案。
在命令列執行 sqlite3 test.db 即可進入 SQLite Shell 環境。若指定的數據庫文件不存在,SQLite 會在首次建立表或寫入數據時自動創建該文件,這種「延遲創建」機制簡化了部署流程。
sqlite> CREATE TABLE Member (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
addr TEXT
);
主鍵欄位 id 預設具備自動遞增屬性,無需額外聲明。
-- 完整欄位插入(id=0 需不存在,否則報錯)
sqlite> INSERT INTO Member VALUES (0, 'wwl', 21, '上海');
-- 指定欄位插入(id 自動遞增)
sqlite> INSERT INTO Member (name, age, addr) VALUES ('wwl', 21, '上海');
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM Member;
.mode column 與 .headers on 可讓結果以對齊欄位、帶標題的方式顯示,提升可讀性。
-- 創建視圖
sqlite> CREATE VIEW schema AS SELECT * FROM Member;
-- 創建索引(加速 id 查詢)
sqlite> CREATE INDEX Member_Idx ON Member(id);
-- 輸出至屏幕
sqlite> .dump
-- 重定向至文件
sqlite> .output backup.sql
sqlite> .dump
sqlite> .output stdout
若文件已存在將被覆蓋。此方式產出的 SQL 腳本包含 DDL 與 DML,適用於跨平台遷移與版本控制。
sqlite3 test.db vacuum
cp test.db test.backup
VACUUM 會整理碎片、釋放已刪除空間,使備份文件體積更小。
.dump 產出的 SQL 文件,導入前需先 DROP 現有表/視圖。.import 文件名 表名。| 命令 | 功能 |
|---|---|
SELECT last_insert_rowid(); | 獲取最後插入行的自增 ID |
.tables | 列出所有表與視圖 |
.indices 表名 | 查看指定表的索引 |
.schema [表名] | 顯示建表/建視圖/建索引的 DDL 語句 |
掌握上述核心命令,即可高效完成 SQLite 數據庫的日常開發、維護與遷移工作。