2010年10月6日 星期三

Android程式設計 (十七) 使用SQLite (2)

建立索引
當資料表儲存的記錄筆數變大時,會影響資料庫作業效能,我們可建立索引來加快速度。例如:
create index idxname on address (name);
意思是針對address資料表的name資料欄,建立一個名叫idxname的索引。一旦建立了索引,sqlite3在針對該欄位查詢作業時,就會自動使用該索引。
查詢資料庫的schema
SQLite資料庫schema是特別存於一個名為sqlite_master的系統資料表,我們可利用"SELECT"指令來查詢,例如:
sqlite> select * from sqlite_master;
table|address|address|2|CREATE TABLE address(name, email, tel)
index|idxname|address|3|CREATE INDEX idxname on address (name)
sqlite>
列出資料庫中的資料表,利用 ".tables":
sqlite> .tables
address
sqlite>
.schema指令顯示原先建立資料表與索引的指令,可以用於重建目前的資料庫用:
sqlite> .schema
CREATE TABLE address(name, email, tel);
CREATE INDEX idxname on address (name);
sqlite>
設定輸出格式
SQLite支援提供8種不同的查詢的結果格式輸出 (csv、column、html、insert、line、tabs、tcl),說明如下:
csv       逐列顯示記錄內容,並以逗號區隔資料欄
column 以多欄方式逐列顯示記錄內容,欄位寬度由.width指令設定
html     HTML表格標籤碼
insert   SQL insert指令碼
line      每列顯示一個欄位資料,格式:欄位名稱=欄位值
list       逐列顯示記錄內容,以'|'符號區隔資料欄
tabs     逐列顯示記錄內容,以tab定位鍵區隔資料欄
tcl       逐列顯示記錄內容,欄位資料以字串方式呈現並以空白鍵區隔
預設是以list格式顯示,我們可以利用".mode"指令來改變輸出格式。
sqlite> .mode csv
我們也可以利用".separator"指令來更換分隔符號,例如:
sqlite> .separator " / "
shell命令列操作SQLite
我們也可在shell命令列直接執行SQLite命令,例如:
D:\SQLite> sqlite3 demo.db "insert into address values('elian', 'elian@email.net', '4444');"
D:\SQLite> sqlite3 demo.db "select * from address;"
資料庫備份
.dump指令可以為資料庫建立標準的SQL資料庫備份,例如:
D:\SQLite>sqlite3 demo.db ".dump" > demo.sql