SQLite 實作了大部分 SQL-92 標準,常用指令包含:
CREATE TABLE、CREATE INDEX、CREATE VIEW、CREATE TRIGGER、DROP、ALTER TABLE (有限支援)INSERT、UPDATE、DELETE、REPLACESELECT、EXPLAIN、PRAGMABEGIN、COMMIT、ROLLBACK、SAVEPOINTATTACH/DETACH DATABASE、COPY、ON CONFLICT、VACUUM宣告為 INTEGER PRIMARY KEY 的欄位即具自動遞增特性。插入 NULL 時會自動取得最大值 +1。若需全域唯一且不重複(即使刪除後),加上 AUTOINCREMENT 關鍵字:
CREATE TABLE t1 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
可用 sqlite3_last_insert_rowid() 取得最後插入的 ID。
核心儲存類別:NULL、INTEGER、REAL、TEXT、BLOB。
但建表時可使用更多型別名稱(如 VARCHAR(n)、DATE、BOOLEAN 等),SQLite 會根據「型別親和性」自動轉換。
這是特性非 Bug。SQLite 採用「動態型別」與「欄位親和性」:宣告型別僅建議儲存格式,實際可存入任意資料。若字串可轉數字則存數字,否則存原字串。唯一例外:INTEGER PRIMARY KEY 僅接受 64-bit 整數。
數值比較時 0 == 0.0 為真,主鍵需唯一,故視為重複值。
SELECT,但同一時間僅一進程可寫入(寫入時鎖定整個檔案)。fcntl/LockFileEx)。NFS、FAT32 等檔案系統鎖可能不可靠,建議資料庫放在本地可靠檔案系統。SQLITE_BUSY,可用 sqlite3_busy_timeout() 設定等待超時。SQLite 以單一檔案、零設定、輕量級特性廣泛用於行動裝置、嵌入式系統與中小型 Web 應用。掌握其型別親和性、鎖機制與交易模型,能有效避開常見坑點。