Zi 字媒體
2017-07-25T20:27:27+00:00
輕型資料庫SQLite結合PHP的開發
資料來源:http://www.webjx.com/htmldata/2005-08-06/1123297871.html
SQLite是一款輕型的資料庫,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的記憶體就夠了。它能夠支援Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比如Tcl、PHP、Java等,還有ODBC介面,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。
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.2.2,它的官方網站是:http://www.sqlite.org ,能在上面獲得源代碼和文檔。同時因為資料庫結構簡單,系統源代碼也不是很多,也適合想研究資料庫系統開發的專業人士。
現在我們開始簡單的介紹,主要我是想講清楚幾個問題,一是如何安裝使用,二是如何跟PHP結合開發。
一、安裝
1. Windows平臺
下載windows下的檔,其實就是一個命令行程式,(下載位址:http://www.sqlite.org/sqlite-3_2_2.zip ),這個命令行程式用來包括生成資料庫檔、執行SQL查詢、備份資料庫等等功能。
下載後比如我們解壓縮到 D:\Downloads\sqlite\sqlite-3_2_2 這個目錄下,那麼我們進入cmd,並且進入該目錄:
cd D:\Downloads\sqlite\sqlite-3_2_2 D:\Downloads\sqlite\sqlite-3_2_2>sqlite3 test.db
# 如果test.db不存在,那麼就產生一個資料庫檔,如果存在就直接使用該資料庫檔,相當於mysql中的use SQLite version 3.2.2 Enter “.help” for instructions sqlite> # SQLite的提示符,如果想查看命令幫助輸入 .help,在sqlite中所有系統命令都是 . 開頭的: sqlite> .help .databases List names and files of attached databases .dump ?TABLE? … Dump the database in an SQL text format .echo ON|OFF Turn command echo on or off .exit Exit this program .explain ON|OFF Turn output mode suitable for EXPLAIN on or off. .header(s) ON|OFF Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .indices TABLE Show names of all indices on TABLE .mode MODE ?TABLE? Set output mode where MODE is one of: csv Comma-separated values column Left-aligned columns. (See .width) html HTML code insert SQL insert statements for TABLE line One value per line list Values delimited by .separator string tabs Tab-separated values tcl TCL list elements .nullvalue STRING Print STRING in place of NULL values .output FILENAME Send output to FILENAME .output stdout Send output to the screen .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute SQL in FILENAME .schema ?TABLE? Show the CREATE statements .separator STRING Change separator used by output mode and .import .show Show the current values for various settings .tables ?PATTERN? List names of tables matching a LIKE pattern .timeout MS Try opening locked tables for MS milliseconds .width NUM NUM … Set column widths for “column” mode sqlite>
# 我們創建一個資料庫catlog sqlite> create table catalog( …> id integer primarykey, …> pid integer, …> name varchar(10) UNIQUE …> ); sqlite> # 如果表存在就會提示: SQL error: table catalog already exists # 我們創建索引資訊 create index catalog_idx on catalog (id asc); # 我們查看表的資訊,看有多少個表 sqlite> .table aa catalog # 查看表的結構: sqlite> .schema catalog CREATE TABLE catalog( id integer primary key, pid integer, name varchar(10) UNIQUE ); CREATE INDEX catalog_idx on catalog(id asc); # 給資料表插入一條記錄 sqlite> insert into catalog (ppid,name) values (‘001′,’heiyeluren’); # 成功無任何提示,如果運算式錯誤提示錯誤資訊: SQL error: near “set”: syntax error # 檢索有多少條記錄 sqlite> select count(*) from catalog; 1 # 檢索搜索記錄 sqlite> select * from catalog; 1|1|heiyeluren
反正使用標準的SQL來操作就沒有問題,不清楚可以去官方網站上查看幫助資訊。另外還要說明的是SQLite不支援修改表結構,如果要修改表結構,只有刪除表重新再建立,所以建立表的時候一定要考慮擴展性。估計以後這方面的功能會加強。
2. Linux/Unix 平臺
error: 目前還沒裝過,呵呵,不過估計跟Windows差不多,改天把這部分內容補上。
二、PHP對SQLite的開發
PHP 5開始不再默認支持Mysql,而是默認支持SQLite,可見它的影響力多麼大,所以如果你想做SQLite的PHP開發,建議你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支援SQLite擴展,這裏我就不仔細講如何安裝PHP擴展,如果不清楚可以查看PHP相關文檔。 這裏我主要是講針對SQLite的開發。目前PHP的主流DB類都支持SQLite的驅動,包括PEAR::DB類、ADOdb類都支援,所以使用DB來來做開發也是個好的選擇。
(以下操作為了簡便,都是再Windows xp平臺進行的)
1. 使用PHP操作已經建立好的sqlite資料庫
如果你有一個已經通過sqlite.exe建立好了的資料庫和表結構,那麼你就能夠直接對它進行操作。php中針對sqlite的處理函數比較多,你可以查看PHP手冊獲得詳細資訊。
我們使用sqlite_open()函數來打開一個sqlite資料庫,它成功返回一個操作資源,失敗返回false,那麼以後的所有操作都是在這個資源上進行的,執行一個sql查詢使用sqlite_query函數。
下麵我假設你在當前PHP程式目錄下有一個abc.db的sqlite資料庫檔,我們對該檔進行操作:
寫了
5860316篇文章,獲得
23313次喜歡