SQLite輕量級數據庫簡介(轉)

SQLite,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。 SQLite第一個Alpha版本誕生於2000年5月. 至今已經有10個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。
SQLite功能
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。目前它的最新版本是 3.7.5 ,發佈時間是2011年2月1日。它的官方網站是:http://www.sqlite. org或者http://www.sqlite .com .cn,能在上面獲得源代碼和文檔。同時因爲數據庫結構簡單,系統源代碼也不是很多,也適合想研究數據庫系統開發的專業人士
SQLite特性
下面是訪問SQLite官方網站: http://www.sqlite. org/ 時第一眼看到關於SQLite的特性.
1. ACID事務
2. 零配置 – 無需安裝和管理配置
3. 儲存在單一磁盤文件中的一個完整的數據庫
4. 數據庫文件可以在不同字節順序的機器間自由的共享
5. 支持數據庫大小至2TB
6. 足夠小, 大致3萬行C代碼, 250K
7. 比一些流行的數據庫在大部分普通數據庫操作要快
8. 簡單, 輕鬆的API
9. 包含TCL綁定, 同時通過Wrapper支持其他語言的綁定
10. 良好註釋的源代碼, 並且有着90%以上的測試覆蓋率
11. 獨立: 沒有額外依賴
12. Source完全的Open, 你可以用於任何用途, 包括出售它
13. 支持多種開發語言,C, PHP, Perl, Java, ASP .NET,Python
SQLite類型
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”時.
如何連接SQLite?
用PHP操作sqlite數據庫
a、 如何連接sqlite數據庫?

      if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
                  select * from sqlite_master;
                  echo "數據庫連接成功!";
      } else {
                 die($sqliteerror);
      }

b、 如何列出數據庫中所有的表?

       if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
            $result = sqlite_array_query($db, 'select * from sqlite_master;');
            foreach ($result as $entry) {
                  echo 'talbe name='.$entry['name']."/n";
                  echo 'sql='.$entry['sql']."/n";
                  echo "-------------------------------------";
           }
           sqlite_close($db);
      } else {
          die($sqliteerror);
      }}

c、 對sqlite數據庫的查詢,以及結果集的顯示

        if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
                $result = sqlite_array_query($db, 'select name, email from user ', SQLITE_ASSOC);
                echo "user表查詢結果:/n";
                echo " n name email/n";
                foreach ($result as $entry) {
                        echo ' '.$entry['name']." " $entry['email']."/n";
                }
                echo ' ';
                sqlite_close($db);
        } else {
        die($sqliteerror);
        }

d、 數據庫對象記錄的增加、刪除、修改

        sqlite_query($db, "INSERT INTO user VALUES('user".$i."'" ",'user".$i."@ hichina. com')");
        sqlite_query($db, "delete from user where user=’user99’");
        sqlite_query($db, 'UPDATE user SET email="lilz@ hichina .com" where name="user1"');

SQLite的管理
管理工具也有不少,建議您使用sqlitemanager,用法酷像phpmyadmin.
可以到 http://sqlitemanager.sourceforge .net/下載

發佈了149 篇原創文章 · 獲贊 6 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章