sqlite介紹:
sqlite是乙個開源的嵌入式關聯式資料庫,它在2023年由d. richard hipp發布,它的減少應用程式管理資料的開銷,sqlite可移植性好,很容易使用,很小,高效而且可靠。
sqlite嵌入到使用它的應用程式中,它們共用相同的程序空間,而不是單獨的乙個程序。從外部看,它並不像乙個rdbms,但在程序內部,它卻是完整的,自包含的資料庫引擎。嵌入式資料庫在你的程式內部不需要網路配置,也不需要管理。因為客戶端和伺服器在同一程序空間執行。sqlite 的資料庫許可權只依賴於檔案系統,沒有使用者帳戶的概念。sqlite 有資料庫級鎖定,沒有網路伺服器。它需要的記憶體,其它開銷很小,適合用於嵌入式裝置,你需要做的僅僅是把它正確的編譯到你的程式。
特點(sqlite』s features and philosophy):
零配置(zero configuration)、可移植(portability):
sqlite的本地型別:integer、 real、text、 blob、null。
基本語法:創、增、刪、查、改。
sqlite支援除了devide之外的關係運算子;
支援除了right和full outer join之外的asci sql;
注意select時,limit 和 offset的用法。
注意多表連線(字段可能重名)。
資料完整性:使用者定義完整性、參照完整性、域完整性、實體完整性。
注意型別親和性。
事物的三個控制命令:begin、 rollback、commit;事物的種類:deferred、immdiaet、exclusive。
五種衝突解決方案:replace、ignore、fail、abort、rollback。
五種鎖狀態:未鎖、共享、保留、未決、排他。
sqlite的資料庫清潔:reindex、vacuum。
檢視query的執行:explain select * from test_name ;
事物的生命週期:
任何情況下,只在乙個事物中執行乙個連線;
pager管理事物、鎖、記憶體緩衝和負責崩潰恢復。
事物可自動提交,也可以通過begin、commit手動提交。
關於上圖:事務通常是從unlocked、reserved、exclusive三種狀態下開始,預設unlocked;白色條框的狀態可在同一時刻狀態下存在。事務的根本是讀和寫。
日誌是資料庫恢復的唯一方法。
注意臨時表的正確應用。
hook()函式對資料庫連線中的insert、delete、update操作都有監視功能。
(1)虛擬資料庫引擎(vbde),包含:vbde程式、程式計數器、結果欄位的名稱和型別、 引數的繫結值、 執行棧和固定數量的編號的內在單元。vbde虛擬機器的的每條指令都由128個中的某乙個操作碼 和 三個運算元構成。c api 可和vbde 直接互動。
要得到sql的vbde程式,可做入下操作;
.mode column
.header on
.width x x x x x x ……
.explain select * from testname;
b*tree記錄:包含兩個域,關鍵字域和資料域。b*tree(任務 是排序和遍歷)的頁由b*tree記錄組成。
層次資料組織模型:從下而上資料結構化加強,從上而下資料無序性增加。c api ------vbed------b-tree------pager-------os inte***ce------database file。
b* tree api 的分類;訪問和事務函式、表函式、游標函式、記錄函式、
(二)編譯器:輸入為單獨的sql命令,輸出是優化的vbde程式。分別在分詞器、分析器、**生成器上完成。
(三)分詞器
(四) 分析器;
(五)**生成器;無明確定義的介面,負責生成**和查詢優化。
sqlite庫學習 1 編譯sqlite
sqlite是一款輕型的資料庫,是遵守acid的關係型資料庫管理系統。它很小,只有sqlite3.h sqlite3ext.h sqlite3.c三個c語言檔案。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式裝置中,可能只需要幾百k的記憶體就夠了。它能夠...
SQLite學習筆記
官方站點 從 的download頁面獲取 download.html sqlite amalgamation 3 6 22.zip是sqlite的windows下原始碼檔案 sqlite 3 6 22.zip sqlitedll 3 6 22.zip 在sqlite中,表示式 a between b...
SQLite學習筆記
官方站點 從 的download頁面獲取 download.html sqlite amalgamation 3 6 22.zip是sqlite的windows下原始碼檔案 sqlite 3 6 22.zip sqlitedll 3 6 22.zip 在sqlite中,表示式 a between b...