SQLlite數據庫多是目前來講最輕量級、使用最爲普遍的SQL數據庫。它自己又是開源的,自身包含在C中的一個相對小的庫中,支持ACID事務、零配置、儲存在單一磁盤文件中的一個完整的數據庫,它所使用的資源很是低,在幾百K的內存環境下也能夠穩定運行,而目前支持的數據大小到2TB,自身又沒有什麼額外的依賴、移植性好、支持多種開發語言,因此SQLlite被普遍運用在各個系統平臺上、一些軟件應用、小型網站、以及嵌入式應用、簡單的數據分析、代替磁盤臨時文件、文件檔案、緩存等等。在Unix系統下通常默認就是有安裝過的,即便是沒有安裝也能夠同在Windows、macOS中同樣到官網(http://www.sqlite.org/download.html)上把二進制包下載下來解壓後配置好PATH環境變量就可使用,或者是下載源碼包編譯亦可,平時能夠在系統中使用shell直接交互或者使用各個gui來使用。創建好的一個schema在SQLlite就是一存儲在磁盤上的一個文件,注意一旦刪除了表的數據文件數據就會丟失,至於使用也很簡單html
[root@localhost data]# sqlite3 #調用二進制文件直接進入命令交互界面 [root@localhost data]# sqlite3 /data/my_test.db #創建一個名爲my_test的schema後綴用什麼均可以可是要注意不一樣的文件名後綴相同的文件名就是不一樣的文件,是徹底2個徹底獨立的schema,建議是用.db是標準的容易區分,若是有這個文件名的schema則不建立數據文件,建好了默認有一個main的database,其次默認創建的schema是不加密的,若是是重要數據建議加密 [root@localhost data]# sqlite3 /data/my_test.db #進入my_test的schema,要注意的是,若是是新創建的schema在其中沒有創建任何項目時是不會產生相應的數據文件的 SQLite version 3.6.20 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .database #查看當前的schema下的database信息 seq name file --- --------------- ---------------------------------------------------------- 0 main /data/my_test.db sqlite> .help #幫助信息 sqlite> .exit #退出 sqlite> SELECT * FROM sqlite_master; #系統表,在SQLite中惟一的一張,是隻讀的,是沒法刪除的執行刪除該表是是在作相似於flush的操做 sqlite> .show echo: off explain: off headers: off mode: list nullvalue: "" output: stdout separator: "|" width:
以上就是SQLlite數據庫比較經常使用的交互命令,至於其餘更多能夠經過help查看,在這個就不作過多的介紹,在平時能夠經過查詢SQLlite數據庫中惟一的一張系統表sqlite_master表獲知當前的schema下全部表、視圖、索引、觸發器相關等等信息,在sqlite_master表中有4個列:sql
type列記錄了項目的類型,如表、視圖、索引、觸發器 name列記錄了項目的名稱,如表名、索引名、視圖名等 tbl_name列記錄所從屬的表名,如索引所在的表名。對於表來講,該列就是表名自己 rootpage列記錄項目在數據庫頁中存儲的編號。對於視圖該列值爲0,觸發器該列值NULL。 sql列記錄建表的DDL
一些經常使用的系統表查詢:
shell
sqlite> SELECT * FROM sqlite_master WHERE type = 'table'; #查看當前schema下全部表信息 sqlite> SELECT * FROM sqlite_master WHERE rootpage = 0; #查看當前schema下全部的視圖信息 sqlite> SELECT * FROM sqlite_master WHERE rootpage IS NULL; #查看當前schema下全部的視圖信息 sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'tablename'; #查看tablenameDDL或者直接使用schma命令查看 sqlite> .schema sqlite_master CREATE TABLE sqlite_master ( type text, name text, tbl_name text, rootpage integer, sql text );
在SQLlite目前下有5種數據存儲類型:數據庫
數據存儲類型 | 說明 |
---|---|
NULL | 值是一個 NULL 值 |
INTEGER | 值是一個帶符號的整數,根據值的大小存儲在 一、二、三、四、6 或 8 字節中 |
REAL | 值是一個浮點值,存儲爲 8 字節的 IEEE 浮點數字 |
TEXT | 值是一個文本字符串,使用數據庫編碼(UTF-八、UTF-16BE 或 UTF-16LE)存儲 |
BLOB | 值是一個 blob 數據,徹底根據它的輸入存儲 |
而SQLlite其自身有支持列的親和數據類型、親和數據名稱概念。任何列仍然能夠存儲任何類型的數據,當數據插入時,該字段的數據將會優先採用親緣類型做爲該值的存儲方式,緩存
如各類int型存入INTEGER中,在建好的表中用的是INTEGER類型,或者仍是用其它的數據類型名稱,可是實際中仍是存在INTEGER中,要注意的是SQLlite自己僅僅是一個很小的輕量級數據庫平時不要把SQLlite當成其它大型數據來使用,其次由於SQLlite的數據文件通常都是以文件的形式存儲的,而在平時就能夠經過對其文件來進行壓縮備份便可bash