自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解講解 Qt SQLite 3入門教程

移動開發(fā)
因?yàn)镾QL的查詢功能強(qiáng)大,語法一致而入門容易,因此成為現(xiàn)今主流數(shù)據(jù)庫的標(biāo)準(zhǔn)語言(微軟、Oracle等大廠的數(shù)據(jù)庫軟件都提供SQL語法的查詢及操作)。想愛你來看內(nèi)容

目前在OS X 10.4里,SQLite是以/usr/bin/sqlite3的形式包裝,也就說這是一個命令列工具,必須先從終端機(jī)(Terminal.app或其他程序)進(jìn)入shell之后才能使用。網(wǎng)絡(luò)上有一些息協(xié)助使用SQLite的視覺化工具,但似乎都沒有像CocoaMySQL(配合MySQL數(shù)據(jù)庫使用)那般好用?;蛟S隨時有驚喜也未可知,以下僅介紹命令列的操作方式。

SQLite顧名思議是以SQL為基礎(chǔ)的數(shù)據(jù)庫軟件,SQL是一套強(qiáng)大的數(shù)據(jù)庫語言,主要概念是由數(shù)據(jù)庫、資料表(table)、查詢指令(queries)等單元組成的關(guān)聯(lián)性數(shù)據(jù)庫(進(jìn)一步的概念可參考網(wǎng)絡(luò)上各種關(guān)于SQL及關(guān)聯(lián)性數(shù)據(jù)庫的文件)。因?yàn)镾QL的查詢功能強(qiáng)大,語法一致而入門容易,因此成為現(xiàn)今主流數(shù)據(jù)庫的標(biāo)準(zhǔn)語言(微軟、Oracle等大廠的數(shù)據(jù)庫軟件都提供SQL語法的查詢及操作)。

以下我們就建立數(shù)據(jù)庫、建立資料表及索引、新增資料、查詢資料、更改資料、移除資料、sqlite3命令列選項(xiàng)等幾個項(xiàng)目做簡單的介紹。

建立數(shù)據(jù)庫檔案

sqlite3建立數(shù)據(jù)庫的方法很簡單,只要在shell下鍵入(以下$符號為shell提示號,請勿鍵入):

  1. $ sqlite3 foo.db 

如果目錄下沒有foo.db,sqlite3就會建立這個數(shù)據(jù)庫。sqlite3并沒有強(qiáng)制數(shù)據(jù)庫檔名要怎么取,因此如果你喜歡,也可以取個例如foo.icannameitwhateverilike的檔名。

在sqlite3提示列下操作

進(jìn)入了sqlite3之后,會看到以下文字:

  1. SQLite version 3.1.3  
  2. Enter ".help" for instructions  
  3. sqlite>  

這時如果使用.help可以取得求助,.quit則是離開(請注意:不是quit)

SQL的指令格式

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

建立資料表

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

  1. create table film(title, length, year, starring); 

這樣我們就建立了一個名叫film的資料表,里面有name、length、year、starring四個字段。

這個create table指令的語法為:

  1. create table table_name(field1, field2, field3, ...); 

table_name是資料表的名稱,fieldx則是字段的名字。sqlite3與許多SQL數(shù)據(jù)庫軟件不同的是,它不在乎字段屬于哪一種資料型態(tài):sqlite3的字段可以儲存任何東西:文字、數(shù)字、大量文字(blub),它會在適時自動轉(zhuǎn)換。

建立索引

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

  1. 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會在針對該字段作查詢時,自動使用該索引。這一切的操作都是在幕后自動發(fā)生的,無須使用者特別指令。加入一筆資料

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

  1. insert into table_name values(data1, data2, data3, ...); 

例如我們可以加入

  1. insert into film values ('Silence of the Lambs, The', 118, 1991, 'Jodie Foster');  
  2. insert into film values ('Contact', 153, 1997, 'Jodie Foster');  
  3. insert into film values ('Crouching Tiger, Hidden Dragon', 120, 2000, 'Yun-Fat Chow');  
  4. insert into film values ('Hours, The', 114, 2002, 'Nicole Kidman'); 

如果該字段沒有資料,我們可以填NULL。

查詢資料

講到這里,我們終于要開始介紹SQL***大的select指令了。我們首先簡單介紹select的基本句型:

  1. select columns from table_name where expression; 

最常見的用法,當(dāng)然是倒出所有數(shù)據(jù)庫的內(nèi)容:

  1. select * from film; 

如果資料太多了,我們或許會想限制筆數(shù):

  1. select * from film limit 10; 

或是照著電影年份來排列:

  1. select * from film order by year limit 10; 

或是年份比較近的電影先列出來:

  1. select * from film order by year desc limit 10; 

或是我們只想看電影名稱跟年份:

  1. select title, year from film order by year desc limit 10; 

查所有茱蒂佛斯特演過的電影:

  1. select * from film where starring='Jodie Foster'

查所有演員名字開頭叫茱蒂的電影('%' 符號便是 SQL 的萬用字符):

  1. select * from film where starring like 'Jodie%'; 

查所有演員名字以茱蒂開頭、年份晚于1985年、年份晚的優(yōu)先列出、最多十筆,只列出電影名稱和年份:

  1. select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10; 

有時候我們只想知道數(shù)據(jù)庫一共有多少筆資料:

  1. select count(*) from film; 

有時候我們只想知道1985年以后的電影有幾部:

  1. select count(*) from film where year >= 1985; 

(進(jìn)一步的各種組合,要去看SQL專書,不過你大概已經(jīng)知道SQL為什么這么流行了:這種語言允許你將各種查詢條件組合在一起──而我們還沒提到「跨數(shù)據(jù)庫的聯(lián)合查詢」呢?。?/p>

如何更改或刪除資料

了解select的用法非常重要,因?yàn)橐?strong>sqlite更改或刪除一筆資料,也是靠同樣的語法。

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

  1. update film set starring='Jodie Foster' where starring='Jodee Foster'

就會把主角字段里,被打成'Jodee Foster'的那筆(或多筆)資料,改回成Jodie Foster。

  1. delete from film where year < 1970

就會刪除所有年代早于1970年(不含)的電影了。

其他sqlite的特別用法

sqlite可以在shell底下直接執(zhí)行命令:

輸出 HTML 表格:

  1. sqlite3 -html film.db "select * from film;" 

將數(shù)據(jù)庫「倒出來」:

  1. sqlite3 film.db ".dump" > output.sql 

利用輸出的資料,建立一個一模一樣的數(shù)據(jù)庫(加上以上指令,就是標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫備份了):

  1. sqlite3 film.db < output.sql 

在大量插入資料時,你可能會需要先打這個指令:

  1. begin; 

插入完資料后要記得打這個指令,資料才會寫進(jìn)數(shù)據(jù)庫中:

  1. commit; 

以上我們介紹了SQLite這套數(shù)據(jù)庫系統(tǒng)的用法。事實(shí)上OS X也有諸于SQLiteManagerX這類的圖形接口程序,可以便利數(shù)據(jù)庫的操作。不過萬變不離其宗,了解SQL指令操作,SQLite與其各家變種就很容易上手了。

至于為什么要寫這篇教學(xué)呢?除了因?yàn)镺S X Tiger大量使用SQLite之外(例如:Safari的RSS reader,就是把文章存在SQLite數(shù)據(jù)庫里!你可以開開看~/Library/Syndication/Database3這個檔案,看看里面有什么料),OpenVanilla從0.7.2開始,也引進(jìn)了以SQLite為基礎(chǔ)的詞匯管理工具,以及全字庫的注音輸入法。因?yàn)槭褂肧QLite,這兩個模塊不管數(shù)據(jù)庫內(nèi)有多少筆資料,都可以做到「瞬間啟動」以及相當(dāng)快速的查詢回應(yīng)。

將一套方便好用的數(shù)據(jù)庫軟件包進(jìn)OS X中,當(dāng)然也算是Apple相當(dāng)相當(dāng)聰明的選擇。再勤勞一點(diǎn)的朋友也許已經(jīng)開始想拿SQLite來記錄各種東西(像我們其中就有一人寫了個程序,自動記錄電池狀態(tài),寫進(jìn)SQLite數(shù)據(jù)庫中再做統(tǒng)計(jì)......)了。想像空間可說相當(dāng)寬廣。

目前支援SQLite的程序語言,你能想到的大概都有了。這套數(shù)據(jù)庫2005年還贏得了美國O'Reilly Open Source Conference的***開放源代碼軟件獎,獎評是「有什么東西能讓Perl, Python, PHP, Ruby語言團(tuán)結(jié)一致地支援的?就是SQLite」。由此可見SQLite的地位了。而SQLite程序非常小,更是少數(shù)打 "gcc -o sqlite3 *",不需任何特殊設(shè)定就能跨平臺編譯的程序。小而省,小而美,SQLite連網(wǎng)站都不多贅言,直指SQL語法精要及API使用方法,原作者大概也可以算是某種程序設(shè)計(jì)之道(Tao of Programming)里所說的至人了。

  1. Enjoy /usr/bin/sqlite3 in your OS X Tiger. :) 

 

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2011-06-27 14:56:46

Qt Designer

2011-06-16 09:53:25

Qt QML 教程

2011-07-29 11:28:58

iPhone開發(fā)

2013-09-18 14:46:32

StormStorm集群

2012-02-29 10:18:31

SQLite3Android

2009-06-02 14:46:26

Hibernate關(guān)系映射教程

2009-10-21 14:49:46

VB入門教程

2011-07-04 17:18:23

Qt SQLite 數(shù)據(jù)庫

2010-08-03 13:06:15

Flex Builde

2013-08-29 14:12:52

Storm分布式實(shí)時計(jì)算

2009-07-08 15:12:48

Java Servle

2014-05-26 15:35:55

Web組件Web Compone

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2011-06-17 09:34:02

Qt 4.5.1 Sqlite 移植

2022-02-18 09:39:51

Vue3.0Vue2.0Script Set

2010-05-21 12:50:45

Subversion快

2011-07-21 10:29:18

iPhone 開發(fā)

2010-07-27 15:53:15

2010-08-03 14:37:30

Flex入門教程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號