日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

[轉(zhuǎn)帖]SQLite使用教學(xué)

 zc4ever 2011-03-03
[轉(zhuǎn)帖]SQLite使用教學(xué)

作者:tamsyn  來(lái)源:www.sqlite.com.cn  時(shí)間:2009-7-29  【 字體:   】 〖 雙擊滾屏 〗



SQLite3。這套軟件有幾個(gè)特色:

  • 軟件屬于公共財(cái)(public domain
  • 支援大多數(shù)的SQL指令(下面會(huì)簡(jiǎn)單介紹)。
  • 一個(gè)檔案就是一個(gè)數(shù)據(jù)庫(kù)。不需要安裝數(shù)據(jù)庫(kù)服務(wù)器軟件。
  • 完整的Unicode支援(因此沒(méi)有跨語(yǔ)系的問(wèn)題)。
  • 速度很快。
SQLite顧名思議是以SQL為基礎(chǔ)的數(shù)據(jù)庫(kù)軟件,SQL是一套強(qiáng)大的數(shù)據(jù)庫(kù)語(yǔ)言,主要概念是由「數(shù)據(jù)庫(kù)」、「數(shù)據(jù)庫(kù)表」(table)、「查詢指令」(queries)等單元組成的「關(guān)聯(lián)性數(shù)據(jù)庫(kù)」(進(jìn)一步的概念可參考網(wǎng)絡(luò)上各種關(guān)于SQL及關(guān)聯(lián)性數(shù)據(jù)庫(kù)的文件)。因?yàn)?SQL的查詢功能強(qiáng)大,語(yǔ)法一致而入門(mén)容易,因此成為現(xiàn)今主流數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言(微軟、Oracle等大廠的數(shù)據(jù)庫(kù)軟件都提供SQL語(yǔ)法的查詢及操作)。
以下我們就建立數(shù)據(jù)庫(kù)、建立數(shù)據(jù)庫(kù)表及索引、新增數(shù)據(jù)、查詢數(shù)據(jù)、更改數(shù)據(jù)、刪除數(shù)據(jù)、sqlite3命令列選項(xiàng)等幾個(gè)項(xiàng)目做簡(jiǎn)單的介紹。



創(chuàng)建數(shù)據(jù)庫(kù)

用sqlite3創(chuàng)建數(shù)據(jù)庫(kù)的方法很簡(jiǎn)單,只要在shell下鍵入(以下$符號(hào)為shell提示號(hào),請(qǐng)勿鍵入):
$ sqlite3 foo.db3
如果目錄下沒(méi)有foo.db3,sqlite3就會(huì)建立這個(gè)數(shù)據(jù)庫(kù)。sqlite3并沒(méi)有強(qiáng)制數(shù)據(jù)庫(kù)名要怎么取,因此如果你喜歡,也可以取個(gè)例如foo.icannameitwhateverilike的名字。
在sqlite3提示列下操作

進(jìn)入了sqlite3之后,會(huì)看到以下文字:
SQLite version 3.1.3
Enter ".help" for instructions
sqlite>
這時(shí)如果使用.help可   以取得求助,.quit則是離開(kāi)(請(qǐng)注意:不是quit)
SQL的指令格式

所有的SQL指令都是以分號(hào)(;)結(jié)尾的。如果遇到兩個(gè)減號(hào)(--)則代表注解,sqlite3會(huì)略過(guò)去。
創(chuàng)建數(shù)據(jù)庫(kù)表

假設(shè)我們要建一個(gè)名叫film的數(shù)據(jù)庫(kù)表,只要鍵入以下指令就可以了:
create table film(title, length, year, starring);
這樣我們就建立了一個(gè)名叫film的數(shù)據(jù)庫(kù)表,里面有name、length、year、starring四個(gè)字段。
這個(gè)create table指令的語(yǔ)法為:
create table table_name(field1, field2, field3, ...);
table_name是數(shù)據(jù)庫(kù)表的名稱(chēng),fieldx則是字段的名字。sqlite3與許多SQL數(shù)據(jù)庫(kù)軟件不同的是,它不在乎字段屬于哪一種字段類(lèi)型:sqlite3的字段可以儲(chǔ)存任何東西:文字、數(shù)字、大量文字(blob),它會(huì)在適時(shí)自動(dòng)轉(zhuǎn)換。
建立索引

如果數(shù)據(jù)庫(kù)表有相當(dāng)多的資料,我們便會(huì)建立索引來(lái)加快速度 。好比說(shuō):
create index film_title_index on film(title);
意思是針對(duì)film數(shù)據(jù)庫(kù)表的title字段,建立一個(gè)名叫film_title_index的索引。這個(gè)指令的語(yǔ)法為
create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3會(huì)在針對(duì)該字段作查詢時(shí),自動(dòng)使用該索引。這一切的操作都是在幕后自動(dòng)發(fā)生的,無(wú)須使用者特別指令。
插入一條記錄

接下來(lái)我們要插入記錄了,插入的方法為使用insert into指令,語(yǔ)法為:
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');
如果某個(gè)字段沒(méi)有數(shù)據(jù),我們可以填NULL。


查詢數(shù)據(jù)

講到這里,我們終于要開(kāi)始介紹SQL最強(qiáng)大的select指令了。我們首先簡(jiǎn)單介紹select的基本句型:
select columns from table_name where expression_r;
最常見(jiàn)的用法,當(dāng)然是查詢出file表中所有的內(nèi)容:
select * from film;
如果數(shù)據(jù)太多了,我們或許會(huì)想限制記錄的條數(shù):
select * from film limit 10;
或是年份比較早的電影先列出來(lái)(缺省為 asc):
select * from film order by year limit 10;
或是年份比較晚的電影先列出來(lái):
select * from film order by year desc limit 10;
或是我們只想看電影名稱(chēng)跟年份:
select title, year from film order by year desc limit 10;
查所有茱蒂佛斯特演過(guò)的電影:
select * from film where starring='Jodie Foster';
查所有演員名字開(kāi)頭叫茱蒂的電影('%'、'_' 符號(hào)便是 SQL 的萬(wàn)用字符,前者代表任意長(zhǎng)度字符,后者代表任意一個(gè)字符):
select * from film where starring like 'Jodie%';
查所有演員名字以茱蒂開(kāi)頭、年份晚于1985年、年份晚的優(yōu)先列出、最多十筆,只列出電影名稱(chēng)和年份:
select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10;
有時(shí)候我們只想知道數(shù)據(jù)庫(kù)一共有多少筆資料:
select count(*) from film;
有時(shí)候我們只想知道1985年以后的電影有幾部:
select count(*) from film where year >= 1985;
(進(jìn)一步的各種組合,要去看SQL專(zhuān)書(shū),不過(guò)你大概已經(jīng)知道SQL為什么這么流行了:這種語(yǔ)言允許你將各種查詢條件組合在一起──而我們還沒(méi)提到「跨數(shù)據(jù)庫(kù)的聯(lián)合查詢」呢?。?br>如何更改或刪除數(shù)據(jù)

了解select的用法非常重要,因?yàn)橐趕qlite更改或刪除一條記錄,也是靠同樣的語(yǔ)法。
例如有一條記錄的名字打錯(cuò)了:
update film set starring='Jodie Foster' where starring='Jodee Foster';
就會(huì)把主角字段里,被打成'Jodee Foster'的那條(或多條)數(shù)據(jù),改回成Jodie Foster。
delete from film where year < 1970;
就會(huì)刪除所有年代早于1970年(不含1970)的電影了。


其他sqlite的特別用法

sqlite可以在shell底下直接執(zhí)行命令:
sqlite3 film.db "select * from film;"
輸出 HTML 表格:
sqlite3 -html film.db "select * from film;"
將數(shù)據(jù)庫(kù)「導(dǎo)出來(lái)」:
sqlite3 film.db ".dump" > output.sql
利用輸出的數(shù)據(jù),建立一個(gè)一模一樣的數(shù)據(jù)庫(kù)(加上以上指令,就是標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫(kù)備份了):
sqlite3 film.db < output.sql
在大量插入數(shù)據(jù)時(shí),你可能會(huì)需要先打這個(gè)指令:
begin;(開(kāi)始事務(wù))
插入完數(shù)據(jù)后要記得打這個(gè)指令,數(shù)據(jù)才會(huì)寫(xiě)進(jìn)數(shù)據(jù)庫(kù)中:
commit;


小結(jié)

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多