Sqlite使用說明 (轉載)

2021-05-28 07:25:59 字數 4443 閱讀 3896

os x自從10.4後把sqlite這套相當出名的資料庫軟體,放進了作業系統工具集裡。os x包裝的是第三版的sqlite,又稱sqlite3。這套軟體有幾個特色:

支援大多數的sql指令(下面會簡單介紹)。

乙個檔案就是乙個資料庫。不需要安裝資料庫伺服器軟體。

完整的unicode支援(因此沒有跨語系的問題)。

速度很快。

sqlite顧名思議是以sql為基礎的資料庫軟體,sql是一套強 大的資料庫語言,主要概念是由「資料庫」、「資料表」(table)、「查詢指令」(queries)等單元組成的「關聯性資料庫」(進一步的概念可參考 網路上各種關於sql及關聯性資料庫的檔案)。因為sql的查詢功能強大,語法一致而入門容易,因此成為現今主流資料庫的標準語言(微軟、oracle等 大廠的資料庫軟體都提供sql語法的查詢及操作)。

以下我們就建立資料庫、建立資料表及索引、新增資料、查詢資料、更改資料、移除資料、sqlite3命令列選項等幾個專案做簡單的介紹。

[隱藏]

用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入(以下$符號為shell提示號,請勿鍵入):

$ sqlite3 foo.db

進入了sqlite3之後,會看到以下文字:

sqlite version 3.1.3enter ".help" for instructionssqlite>
這時如果使用.help可以取得求助,.quit則是離開(請注意:不是quit)

所以的sql指令都是以分號(;)結尾的。如果遇到兩個減號(--)則代表註解,sqlite3會略過去。

假設我們要建乙個名叫film的資料表,只要鍵入以下指令就可以了:

create table film(title, length, year, starring);
這樣我們就建立了乙個名叫film的資料表,裡面有name、length、year、starring四個字段。

這個create table指令的語法為:

create table table_name(field1, field2, field3, ...);
table_name是資料表的名稱,fieldx則是字段的名字。sqlite3與許多sql資料庫軟體不同的是,它不在乎字段屬於哪一種資料型態:sqlite3的字段可以儲存任何東西:文字、數字、大量文字(blub),它會在適時自動轉換。

如果資料表有相當多的資料,我們便會建立索引來加快速度。好比說:

create index film_title_index on film(title);
意思是針對film資料表的name欄位,建立乙個名叫film_name_index的索引。這個指令的語法為

create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3會在針對該字段作查詢時,自動使用該索引。這一切的操作都是在幕後自動發生的,無須使用者特別指令。

接下來我們要加入資料了,加入的方法為使用insert into指令,語法為:

insert into table_name values(data1, data2, data3, ...);
例如我們可以加入

insert into film values ('silence of the lambs, the', 118, 1991, 'jodie foster');insert into film values ('contact', 153, 1997, 'jodie foster');insert into film values ('crouching tiger, hidden dragon', 120, 2000, 'yun-fat chow');insert into film values ('hours, the', 114, 2002, 'nicole kidman');
如果該欄位沒有資料,我們可以填null。

講到這裡,我們終於要開始介紹sql最強大的select指令了。我們首先簡單介紹select的基本句型:

select columns from table_name where expression;
最常見的用法,當然是倒出所有資料庫的內容:

select * from film;
如果資料太多了,我們或許會想限制筆數:

select * from film limit 10;
或是照著電影年份來排列:

select * from film order by year limit 10;
或是年份比較近的電影先列出來:

select * from film order by year desc limit 10;
或是我們只想看電影名稱跟年份:

select title, year from film order by year desc limit 10;
查所有茱蒂佛斯特演過的電影:

select * from film where starring='jodie foster';
查所有演員名字開頭叫茱蒂的電影('%' 符號便是 sql 的萬用字元):

select * from film where starring like 'jodie%';
查所有演員名字以茱蒂開頭、年份晚於2023年、年份晚的優先列出、最多十筆,只列出電影名稱和年份:

select title, year from film where starring like 'jodie%' and year >= 1985 order by year desc limit 10;
有時候我們只想知道資料庫一共有多少筆資料:

select count(*) from film;
有時候我們只想知道2023年以後的電影有幾部:

select count(*) from film where year >= 1985;
(進一步的各種組合,要去看sql專書,不過你大概已經知道sql為什麼這麼流行了:這種語言允許你將各種查詢條件組合在一起──而我們還沒提到「跨資料庫的聯合查詢」呢!)

了解select的用法非常重要,因為要在sqlite更改或刪除一筆資料,也是靠同樣的語法。

例如有一筆資料的名字打錯了:

update film set starring='jodie foster' where starring='jodee foster';
就會把主角欄位裡,被打成'jodee foster'的那筆(或多筆)資料,改回成jodie foster。

delete from film where year < 1970;
就會刪除所有年代早於2023年(不含)的電影了。

sqlite可以在shell底下直接執行命令:

sqlite3 film.db "select * from film;"
輸出 html **:

sqlite3 -html film.db "select * from film;"
將資料庫「倒出來」:

sqlite3 film.db ".dump" > output.sql
利用輸出的資料,建立乙個一模一樣的資料庫(加上以上指令,就是標準的sql資料庫備份了):

sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:

begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:

commit;

以上我們介紹了sqlite這套資料庫系統的用法。事實上os x也有諸於sqlitemanagerx這類的圖形介面程式,可以便利資料庫的操作。不過萬變不離其宗,了解sql指令操作,sqlite與其各家變種就很容易上手了。

至 於為什麼要寫這篇教學呢?除了因為os x tiger大量使用sqlite之外(例如:safari的rss reader,就是把文章存在sqlite資料庫裡!你可以開開看~/library/syndication/database3這個檔案,看看裡面有 什麼料),openvanilla從0.7.2開始,也引進了以sqlite為基礎的詞彙管理工具,以及全字型檔的注音輸入法。因為使用sqlite,這兩 個模組不管資料庫內有多少筆資料,都可以做到「瞬間啟動」以及相當快速的查詢回應。

目前支援sqlite的程式語言,你能想到的大 概都有了。這套資料庫2023年還贏得了美國o'reilly open source conference的最佳開放源**軟體獎,獎評是「有什麼東西能讓perl, python, php, ruby語言團結一致地支援的?就是sqlite」。由此可見sqlite的地位了。而sqlite程式非常小,更是少數打 "gcc -o sqlite3 *",不需任何特殊設定就能跨平台編譯的程式。小而省,小而美,sqlite連**都不多贅言,直指sql語法精要及api使用方法,原作者大概也可以算 是某種程式設計之道(tao of programming)裡所說的至人了。

sqlite使用說明及在POWERPC平台上的移植

sqlite是乙個開源的嵌入式關聯式資料庫,它在2000年由d.richard hipp發布,它的減少應用程式管理資料的開銷,sqlite可移植性好,可以工作在許多嵌入式作業系統下,比如qnx,vxworks,palm os,symbin和windows ce,同時,sqlite是乙個輕量級的嵌入式...

使用說明 附註工具使用說明

附註工具使用說明 附註工具用途 附註工具主要用於更新利用word附註應用程式生成的帶域 的附註,該工具在word右鍵 更新鏈結 的基礎上進行了優化,故在使用時,不能再利用word右鍵 更新鏈結 而要用本工具的 更新當前鏈結 或 更新所有鏈結 使用說明 一 更換路徑 當利用word附註應用程式生成帶域...

使用說明 農用遮光網使用說明

農用遮光網使用說明 建築防塵網購買方 建築施工企業 在購買建築防塵網時,應該對 作出比較,可以分辨品牌 型號,且購買時應該在一定程度上了解信譽良莠。建築防塵網購買方 市場售賣方 在選購建築防塵網時,可以把 作為基礎,好的 可以用來彌補信譽不足,而差的 則需要按照你的服務收費。農用遮光網使用說明 用途...