SQLite學習筆記(1)

2021-06-08 15:01:18 字數 1977 閱讀 8470

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...