概述
SQLite介紹
自幾十年前出現的商業應用程序以來,數據庫就成為軟件應用程序的主要組成部分。正與數據庫管理系統非常關鍵一樣,它們也變得非常龐大,并占用了相當多的系統資源,增加了管理的復雜性。隨著軟件應用程序逐漸模塊模塊化,一種新型數據庫會比大型復雜的傳統數據庫管理系統更適應。嵌入式數據庫直接在應用程序進程中運行,提供了零配置(zero-configuration)運行模式,并且資源占用非常少。
SQLite是一個開源的嵌入式關系數據庫,它在2000年由D. Richard Hipp發布,它的減少應用程序管理數據的開銷,SQLite可移植性好,很容易使用,很小,高效而且可靠。
SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它并不像一個RDBMS,但在進程內部,它卻是完整的,自包含的數據庫引擎。
嵌入式數據庫的一大好處就是在你的程序內部不需要網絡配置,也不需要管理。因為客戶端和服務器在同一進程空間運行。SQLite 的數據庫權限只依賴于文件系統,沒有用戶帳戶的概念。SQLite 有數據庫級鎖定,沒有網絡服務器。它需要的內存,其它開銷很小,適合用于嵌入式設備。你需要做的僅僅是把它正確的編譯到你的程序。
架構(architecture)
SQLite采用了模塊的設計,它由三個子系統,包括8個獨立的模塊構成。
關于這個圖有以下幾點值得注意:
A、一個事務可以在UNLOCKED,RESERVED或EXCLUSIVE三種狀態下開始。默認情況下在UNLOCKED時開始。
B、白色框中的UNLOCKED, PENDING, SHARED和 RESERVED可以在一個數據庫的同一時存在。
C、從灰色的PENDING開始,事情就變得嚴格起來,意味著事務想得到排斥鎖(EXCLUSIVE)(注意與白色框中的區別)。
雖然鎖有這么多狀態,但是從體質上來說,只有兩種情況:讀事務和寫事務。
讀者可以從下載SQLite 3.3.4的版本
Cmd 進入命令行
用.help可以看看有什么命令
>.help 回車即可
看看有創建了多少表
>.tables
看表結構
>.schema 表名
看看目前掛的數據庫
>.database
如果要把查詢輸出到文件
>.output 文件名
> 查詢語句;
把查詢結果用屏幕輸出
>.output stdout
把表結構輸出,同時索引也會輸出
> .dump 表名
退出
>.exit 或者.quit
從下載Ado.net驅動。
下載了安裝,在安裝目錄中存在System.Data.SQLite.dll
我們只需要拷貝這個文件到引用目錄,并添加引用即可對SQLite數據庫操作了
所有的Ado.net對象都是以SQLite開頭的,比如SQLiteConnection
連接串只需要如下方式
Data Source=d:/test.db 或者DataSource=test.db--應用在和應用程序或者.net能夠自動找到的目錄
剩下的就很簡單了~~
SQL語法
由于以前用SQLServer或者ISeries,所以DDL的語法很汗顏
創建一個單個Primary Key的table
CREATE TABLE [Admin] (
[UserName] [nvarchar] (20) PRIMARY KEY NOT NULL ,
[Password] [nvarchar] (50) NOT NULL ,
[Rank] [smallint] NOT NULL ,
[MailServer] [nvarchar] (50) NOT NULL ,
[MailUser] [nvarchar] (50) NOT NULL ,
[MailPassword] [nvarchar] (50) NOT NULL ,
[Mail] [nvarchar] (50) NOT NULL
) ;
創建一個多個Primary Key的table
CREATE TABLE [CodeDetail] (
[CdType] [nvarchar] (10) NOT NULL ,
[CdCode] [nvarchar] (20) NOT NULL ,
[CdString1] [ntext] NOT NULL ,
[CdString2] [ntext] NOT NULL ,
[CdString3] [ntext] NOT NULL,
PRIMARY KEY (CdType,CdCode)
) ;
創建索引
CREATE INDEX [IX_Account] ON [Account]([IsCheck], [UserName]);
還可以視圖等等。
SQLite 分頁查詢
寫法1:
SELECT * FROM TABLE1 LIMIT 20 OFFSET 20 ;
寫法2:
SELECT * FROM TABLE1 LIMIT 20 , 20;
SQLite 文件的壓縮
在多次刪除數據、插入數據、更新數據后,數據庫體積增大,但實際有效數據量很小,則需要對數據庫進行壓縮、整理,把已經刪除的數據從物理文件中移除。調用一下SQL命令即可:
VACUUM
VACUUM的實現
新聞熱點
疑難解答
圖片精選