SQLITE簡介

by adonis 9. 四月 2018 15:17

    者:楊先民 

    稿:張智凱

前言 

想到行動裝置或嵌入式系統中的資料庫,很多人就會想到 SQLITE

而事實上目前 SQLITE也是行動裝置中最常使用的資料庫,如果 

想要有彈性、跨平台,可以考慮一下使用這個非常可攜式的資料庫系統,本期就介紹 SQLITE這個資料庫系統 

 

嵌入式系統的資料庫

由於筆者之前是接觸 Windows CE系統,在 Windows CE中也有一個類似本文的嵌入式資料庫系統,它的名稱為 SQL Compact Edition,簡稱為 SQL CE,它們被設計出來的原因都很簡單,就是要能夠在裝置夠小的行動裝置上放置為數不少的資料,例如你如果想把上市公司的資料給記錄下來,這類型的資料不太可能放置在檔案系統中,畢竟放在檔案系統資料也許可以存放,但查詢卻是個問題,同樣的情況也發生在 XML身上,當然,如果真的想做到資料可攜, XML的跨平台特性是個好選擇,但同樣的查詢它必需去學習 XQuery之類的語言,同樣是個最大的問題。(XQuery並不是那麼的直覺,畢竟 XML並不是關聯式資料庫,事實上大多數處理 XML的資料都是階層式資料,故不在本文的討論範圍之內。

SQLITE是一個?

簡單的來說, SQLITE是一個 C寫的程式庫,它很小,但是其討厭也是最難的地方在於,你必需要會寫 C才能控制它,或是你自已語言有再包一層 API 來處理與 C之間的溝通,但由於它是 C語言的程式庫,所以跨平台的特性是不言可喻的。

SQLITE主要有幾個特性,是值得各位一學的:

1.     支援交易的 ACIDAtomic,Consistent,Isolated,Durable transaction。(雖然行動裝置很少需要交易,但它確實支援了)

2.     無需設定與管理,所以需要搭配第三協力廠所提供的管理工具。

3.     支援 ansi-sql 92的語法。

4.     資料庫系統是一個檔案,這點和 SQL Compact Edition以及 Access有點像,不過大多數的嵌入式資料庫都是如此。

5.     支援到 2TB的大小(也就是241次方資料,說實在也夠用了)

6.     記憶體需求小:由於是用不到3萬行的 C語言,所以小於 250KB的程式空間。

7.     可以免費使用(這點很重要,但不確定商業使用是否要付費)。

8.     使用 unicode

 

SQLITE的官方網站在:

http://www.sqlite.org/

 

裡面包含了一些下載點以及 SQL語法的介紹,不過如果你有學過其他關聯式資料庫的 SQL指令,很多東西大多是相同的(例如 group byorder by、子查詢這些耳熟能詳的功能)。有些則是有點不太相同,例如在 SQL Server中,很常用 TOP取出資料,像是:

select top 5 * from orders

這種用法,而在 SQLITE則是使用

select * from orders limit 5

這種寫法。當然有些人說 MySQL就是這樣寫的啊,也對啦,我也搞不太清楚到底誰才是 ansi sql的寫法了,不過這些都可以在官網中找到答案就是了。

 

若你想管理它的話,可以在官網的下載網頁:

http://www.sqlite.org/download.html

 

下載已經編譯好的程式,不過就是要使用命令列來控制就是了。

 

BUT! 為何我會突然提到 SQLITE這個東西呢,主要是因為最近在寫 IPHONE程式會需要使用資料庫,雖然 iOS本身有支援自已的「資料庫」,但是對一個熟悉 SQL 指令的人來說,要搞懂非關聯式資料庫,又沒有使用 ansi sql的方式查詢資料庫,實在是相當然不容易學習啊!

 

所以如果你想要在 iphone開發資料庫程式有個開始的話,建議可以使用 SQLITE當做是一個起點,因為它確實是很容易上手,唯一目前比較麻煩的一點是,你必需要找到一個管理工具,而且是一個圖型化的管理工具來管理它會比較好。

 

所幸,還蠻多軟體有支援「圖型化」的 SQLITE管理工具,你用 google查就有一堆,雖然可能大多數是需要錢的,例如:

http://www.sqlabs.net/sqlitemanager.php

它是一個可以管理 SQLITE的工具,也還有分 MAC Windows兩個版本,只可惜要價49美金(不過倒也不是個天價就是了)。

或者是用筆者目前所使用的 Navicat,它也有分很多平台的版本,而且它本身還有很多其他關聯式資料庫的不同管理工具,你可以使用 Navicat lite(是一個免費的版本),它也是一個相當好用的工具,尤其 iphone開發一定要在 MAC OS 上開發,花點小錢就可以管理資料庫系統,這個投資實在是太合算啦。

它的網址在:

http://www.navicat.com/en/products/navicat_sqlite/sqlite_overview.html

 

至於怎麼裝,我們就省略了,總之我拿到了 Navicat lite的版本(奸笑),

 

 

它進入的畫面如圖一:

 

圖一:SQLITE的管理工具 Navicat Lite 

 

也許,我應該寫個公關信和 Navicat的負責人說一下,我幫他們介紹這個工具,然後他們提供給我 Enterprise版才是。 

不過,根據我用了三個月的結果,其實 Lite版就夠了,因為你也不會期待在 SQLITE中做什麼很負責的工作,就是建建資料表,設定個 PK,查詢個資料,如此而以,如果你又有其他關聯式資料庫的功力加持,應該是不需要用到更複雜的版本(不過這是我個人的看法)。

進入之後選左上角的 Connection,就可以選擇你所要建立的資料庫類型,不過以本例而言,我們只要建立 SQLITE的資料庫即可,所以就會看到如圖二的畫面:

 

圖二:建立 SQLITE資料庫的畫面。 

 

自行輸入一個 Connection Name,並且選擇建立一個 SQLite3的資料庫,Database File就不用說了吧,選擇你目前作業系統的位置,我是習慣副檔名叫 sqlite,這樣以後雙擊兩下可以直接叫出 Navicat這個管理工具,而且在 iphone實機中,使用者是無法叫出這個檔案的(多虧有沙箱的保護,阿門)。不過這個副檔名你高興取什麼名字那是你的自由,你自已高興就好,如圖三:

 


 

圖三:建立一個新的 SQLite3的資料庫。 

建立完之後,你會發現如圖四的畫面: 

 

圖四:建立完資料庫後的畫面。 

 

不要以為是你的電腦發生問題,其實你還要在 testConnection那個名稱中,按下右鍵 openconnection才行連結(怎麼那麼奇怪的設計,不知道)。 

 

之後出現的圖五,你就知道了,應該不用再多做說明,可以開始設計資料表了:

圖五:似曾相識的熟悉畫面。

 

不過,你也不用對它的資料型別期待太高, SQLite基本上就是 blobintegerreal以及 text四種資料型別,所以如果你要處理日期,你必需把資料型別設定成 text,不過話雖如此,還是要尊守它的規則,像我一直習慣處理日期是用 2009/09/10這種 / 當做是年月日之間的間隔文字,但在 SQLite中,是要使用 2009-09-10這種 –(減號)當做是年月日之間的間隔文字,不然日期之間的運算(例如日期相減),都將不會發生作用。

結語

先有個開始吧,替未來我寫 iphone程式設計相關文件來個開頭吧!不過在我寫 iphone這些天的日子以來,發現 SQLite這資料庫真的相當好玩以及不難用,該有的功能都有,不該有的也沒有(廢話),如果日後要撰寫 iphone開發的內容,我一定會再把本篇加以補完的。

 

Tags:

楊先民Adonis Young

不允許評論

NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List