DB-SQLite:百科

ylbtech-DB-SQLite:百科

SQLite,是一款輕型的數據庫,是遵照ACID的關係型數據庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp創建的公有領域項目。它的設計目標是嵌入式的,並且目前已經在不少嵌入式產品中使用了它,它佔用資源很是的低,在嵌入式設備中,可能只須要幾百K的內存就夠了。它可以支持Windows/Linux/Unix等等主流的操做系統,同時可以跟不少程序語言相結合,好比 Tcl、C#、PHP、Java等,還有ODBC接口,一樣比起Mysql、PostgreSQL兩款開源的世界著名數據庫管理系統來說,它的處理速度比他們都快。SQLite第一個Alpha版本誕生於2000年5月。 至2015年已經有15個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。程序員

1. 工做原理返回頂部
不像常見的客戶-服務器範例SQLite引擎不是個程序與之通訊的獨立進程而是鏈接到程序中成爲它的一個主要部分。因此主要的 通訊協議是在 編程語言內直接API調用。這在 消耗總量、延遲時間和總體簡單性上有積極的做用。整個數據庫( 定義、表、索引和數據自己)都在 宿主主機上存儲一個單一的文件中。它的簡單的設計是經過在開 始一個事務的時候 鎖定整個數據文件而完成的。
 
2. 功能特性返回頂部
1. ACID事務
2. 零配置 – 無需安裝和管理配置
3.儲存在單一磁盤文件中的 一個完整的數據庫
4.數據庫文件 能夠在不一樣字節順序機器間自由的共享
5.支持數據庫 大小至2TB
6. 足夠小, 大體13萬行C代碼, 4.43M
7. 比一些流行的數據庫在大部分普通數據庫 操做要快
8. 簡單, 輕鬆的 API
9. 包含TCL綁定, 同時 經過Wrapper支持其餘語言的綁定
10. 良好註釋的源代碼, 而且有着 90%以上的測試覆蓋率
11. 獨立: 沒有額外依賴
12. 源碼徹底的開源, 你能夠用於任何用途, 包括出售它
13. 支持多種開發語言,C, C++, PHP, Perl, Java, C#,Python, Ruby等
SQLite雖然很小巧,可是支持的SQL語句不會遜色於其餘開源數據庫,它支持的SQL包括:
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
同時它還 支持事務處理功能等等。也有人說它象Microsoft的Access,有時候真的以爲有點象,可是事實上它們區別很大。好比SQLite 支持 跨平臺,操做簡單,可以 使用不少語言直接建立數據庫,而不象Access同樣須要Office的支持。若是你是個 很小型的應用,或者你想作 嵌入式開發,沒有合適的數據庫系統,那麼你能夠考慮使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面得到源代碼和文檔。同時由於數據庫結構簡單,系統源代碼也不是不少,也適合 想研究數據庫系統開發的 專業人士。
 
3. 語言綁定返回頂部
能夠從C/C++程序中使用這個庫,還能夠得到對Tcl和一些其餘腳本語言的綁定。
在CPAN的 DBD::SQLite上有一個Perl的DBI/DBD模塊,它不是到SQLite的接口,而是包括整個SQLite數據庫引擎在其中並不須要任何額外的軟件。
還有一個Python模塊叫作PySQLite。
PHP從PHP5.0開始包含了SQLite,可是自5.1版以後開始成爲一個延伸函式庫。SQLite能與PHP4一塊兒工做但不包含在其中。
Rails2.0.3將缺省的數據庫配置改成了SQLite 3。
 
4. 數據類型返回頂部
SQLite的數據類型
首先你會接觸到一個讓你驚訝的名詞: Typelessness( 無類型). 對! SQLite是無類型的. 這意味着你能夠保存任何類型的數據到你所想要保存的任何表的任何列中, 不管這列聲明的數據類型是什麼(只有在一種狀況下不是, 稍後解釋). 對於SQLite來講對字段不指定類型是徹底有效的. 如:
Create Table ex1(a, b, c);
誠然SQLite容許忽略數據類型, 可是 仍然建議在你的Create Table語句中指定數據類型. 由於數據類型對於你和其餘的 程序員交流, 或者你準備換掉你的數據庫引擎時 能起到一個提示或幫助的做用. SQLite支持常見的數據類型, 如:
CREATE TABLE ex2
a VARCHAR(10),
b NVARCHAR(15),
c TEXT,
d INTEGER,
e FLOAT,
f BOOLEAN,
g CLOB,
h BLOB,
i TIMESTAMP,
j NUMERIC(10,5)
k VARYING CHARACTER (24),
l NATIONAL VARYING CHARACTER(16)
前面提到在某種狀況下, SQLite的字段並非無類型的. 即在字段類型爲」Integer Primary Key」時.
 
5. 客戶端管理返回頂部
SQLite亦能夠做爲桌面數據庫使用,如下爲 第三方SQLite的GUI軟件   。例如:
SQLiteMan,使用QT開發的一個SQLite客戶端,支持多語言、跨平臺。
SQLiteSpy 輕量級的SQLite客戶端,免費,單文件,界面設計緊湊,很穩定, 功能相對較少,建立表與添加數據均需sql語句,做爲數據瀏覽和修改工具極佳。
SQLite Manager, 以火狐瀏覽器的擴展形式提供的SQLite客戶端  。
SQLite Database Browser, a graphical client to access SQLite databases 。
SqlPro SQL Client, another graphical client to work with SQLite databases。
 
6. 使用技巧返回頂部

使用.NET操做SQLLITE

先下載ADO.NET2.0 Provider for SQLite下載binaries zip版就能夠了。下載完後解壓縮,能夠在bin目錄下找到 System.Data.SQLite.DLL。在vs2008中用 Add Reference(添加引用)功能把System.Data.SQLite.DLL加到 工程裏就能夠了。運行下面代碼試試:
string datasource = "e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//鏈接數據庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//設置密碼,SQLite ADO.NET實現了數據庫密碼保護
conn.ConnectionString = connstr.ToString();
conn.Open();
//建立表
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
//插入數據
sql = "INSERT INTO test VALUES('a','b')";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出數據
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());
 
7. SQLite 經常使用函數返回頂部
SQLite 有許多內置函數用於 處理字符串或數字數據。下面列出了一些有用的 SQLite 內置函數,且全部函數都是大小寫不敏感,這意味着您可使用這些函數的小寫形式或大寫形式或混合形式。欲瞭解更多詳情,請查看 SQLite 的官方文檔:
序號 函數 & 描述
1 SQLite COUNT 函數 SQLite COUNT 彙集函數是用來計算一個數據庫表中的行數。
2 SQLite MAX 函數 SQLite MAX 聚合函數容許咱們選擇某列的最大值。
3 SQLite MIN 函數 SQLite MIN 聚合函數容許咱們選擇某列的最小值。
4 SQLite AVG 函數 SQLite AVG 聚合函數計算某列的平均值。
5 SQLite SUM 函數 SQLite SUM 聚合函數容許爲一個數值列計算總和。
6 SQLite RANDOM 函數 SQLite RANDOM 函數返回一個介於 -9223372036854775808 和 +9223372036854775807 之間的僞隨機整數。
7 SQLite ABS 函數 SQLite ABS 函數返回數值參數的絕對值。
8 SQLite UPPER 函數 SQLite UPPER 函數把字符串轉換爲大寫字母。
9 SQLite LOWER 函數 SQLite LOWER 函數把字符串轉換爲小寫字母。
10 SQLite LENGTH 函數 SQLite LENGTH 函數返回字符串的長度。
11 SQLite sqlite_version 函數 SQLite sqlite_version 函數返回 SQLite 庫的版本。
 
8. 歷史版本返回頂部
 
9. 注意事項返回頂部
在肯定是否在應用程序中使用 SQLite 以前,應該考慮如下幾種狀況:
  • 有沒有可用於 SQLite 的 網絡服務器。從應用程序運行位於其餘計算機上的 SQLite 的唯一方法是從網絡共享運行。這樣會致使一些問題,像 UNIX® 和 Windows® 網絡共享都存在文件鎖定問題。還有因爲與訪問網絡共享相關的延遲而帶來的性能降低問題。
  • SQLite 只提供數據庫級的鎖定。雖然有一些增長併發的技巧,可是,若是應用程序須要的是表級別或行級別的鎖定,那麼 DBMS 可以更好地知足您的需求。
  • 正如前面提到的,SQLite 能夠 支持天天大約 100,00 次點擊率的 Web 站點 —— 而且,在某些狀況下, 能夠處理 10 倍於此的通訊量。對於具備高通訊量或須要支持龐大瀏覽人數的 Web 站點來講,應該考慮使用 DBMS。
  • SQLite 沒有用戶賬戶概念,而是根據文件系統肯定全部數據庫的權限。這會使強制執行存儲配額發生困難,強制執行用戶許可變得不可能。
  • SQLite 支持多數(但不是所有)的 SQL92 標準。不受支持的一些功能包括徹底觸發器支持和可寫視圖。
若是您感到其中的任何限制會影響您的應用程序,那麼您應該考慮使用完善的 DBMS。若是您能夠解除這些限制問題,而且對快速靈活的嵌入式開源數據庫引擎很感興趣,則應重點考慮使用 SQLite。
一些可以真正表現 SQLite 優越性能的領域是 Web 站點,可使用 SQLite 管理應用程序數據、快速應用程序原型製造和培訓工具。
因爲資源佔用少、性能良好和零管理成本,嵌入式數據庫有了它的用武之地,它將爲那些之前沒法提供用做持久數據的後端的數據庫的應用程序提供了高效的性能。現在沒有必要使用文本文件來實現持久存儲。SQLite 之類的嵌入式數據庫的易於使用性能夠加快應用程序的開發,並使得小型應用程序可以徹底支持複雜的 SQL。這一點對於對於小型設備空間的應用程序來講尤爲重要。
嵌入式數據庫對於加快應用程序開發也很重要,尤爲是在用於數據庫抽象層(例如PEAR::DB或ezSQL)時。最後,SQLite 正在積極開發中,將來必定會有新的功能,會對開源社區更有用。
 
10.返回頂部
一、百度百科
二、
 
11.返回頂部
 
warn 做者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
相關文章
相關標籤/搜索