首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQLite 核心特性與常見問題完整指南(含型別親和性、並發鎖、分頁等)

     編輯:MySQL 資料庫相關知識

SQLite 作為輕量級嵌入式資料庫,廣泛應用於行動裝置與桌面應用。本文彙整 14 大核心知識點,涵蓋建庫、型別系統、並發控制、DDL 限制等實戰重點。

關鍵特性速覽

1. 資料庫建立與開啟

若不建立資料表,資料庫檔案不會實際寫入磁碟。sqlite3_open 若指定路徑不存在會自動建立檔案,但後續查詢失敗多因路徑錯誤,建議先檢查檔案是否存在再決定開啟或建立。

2. 自動遞增主鍵

宣告為 INTEGER PRIMARY KEY 的欄位即為自動遞增,無需額外序列物件。

3. 型別系統與「型別親和性」

SQLite 僅有 5 種儲存類別:NULL、INTEGER、REAL、TEXT、BLOB。但不強制型別約束,任何資料可插入任何欄位(除 INTEGER PRIMARY KEY 僅接受 64 位整數)。

插入時會嘗試依宣告型別轉換(如字串轉整數),轉換失敗則存原始字串,此機制稱為型別親和性。

4. 主鍵值唯一性判定

數值型主鍵視 0 與 0.0 為相同值(整數比較相等),故不可同時作為不同列的主鍵。

5. 並發與鎖機制

  • 多進程可同時 SELECT(共享鎖)。
  • 任一時刻僅允許一進程寫入(排他鎖),寫入通常僅耗費幾毫秒。
  • NFS / FAT 檔案系統下鎖機制可能失效,生產環境應避免將資料庫檔案置於網路磁碟。
  • 預設遇鎖即回傳 SQLITE_BUSY,可用 sqlite3_busy_timeout() 設定等待超時。

6. 執行緒安全

編譯時需啟用 SQLITE_THREADSAFE=1,Windows/Linux 預編譯版本均已開啟。可透過 sqlite3_threadsafe() 執行期檢查。

7. 實用管理指令

  • 列出所有資料表:.tables
  • 查看完整結構:.schema
  • 支援 LIKE 模式過濾

8. 容量限制

SQLite 3.0+ 單筆記錄無大小限制,資料庫理論上限 2TB(2^41 bytes)。物件名稱無長度限制,SQL 函數名限 255 字元。

9. VARCHAR 不截斷特性

宣告 VARCHAR(10) 實際可存 500 字元且永不截斷,長度檢查僅存在於宣告中。

10. ALTER TABLE 限制與變通

僅支援 ADD COLUMN(僅能加在表尾)與 RENAME TABLE。複雜結構變更需:建立臨時表 → 複製資料 → 刪除舊表 → 建立新表 → 回寫資料。

11. 極簡分頁語法

SELECT * FROM Account LIMIT 9 OFFSET 10(跳過 10 筆取 9 筆),或 LIMIT 10,9(MySQL 相容寫法)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved