青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會(huì)很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
From: http://www.yuanma.org/data/2008/1212/article_3407.htm

OS X自從10.4后把SQLite這套相當(dāng)出名的數(shù)據(jù)庫軟件,放進(jìn)了作業(yè)系統(tǒng)工具集里。OS X包裝的是第三版的SQLite,又稱SQLite3。這套軟件有幾個(gè)特色:

  • 軟件屬于公共財(cái)(public domain),SQLite可說是某種「美德軟件」(virtueware),作者本人放棄著作權(quán),而給使用SQLite的人以下的「祝福」(blessing):
    • May you do good and not evil. 愿你行善莫行惡
    • May you find forgiveness for yourself and forgive others. 愿你原諒自己寬恕他人
    • May you share freely, never taking more than you give. 愿你寬心與人分享,所取不多于你所施予
  • 支援大多數(shù)的SQL指令(下面會(huì)簡單介紹)。
  • 一個(gè)檔案就是一個(gè)數(shù)據(jù)庫。不需要安裝數(shù)據(jù)庫服務(wù)器軟件。
  • 完整的Unicode支援(因此沒有跨語系的問題)。
  • 速度很快。

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

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)等幾個(gè)項(xiàng)目做簡單的介紹。


目錄

  • 1 建立數(shù)據(jù)庫檔案
  • 2 在sqlite3提示列下操作
  • 3 SQL的指令格式
  • 4 建立資料表
  • 5 建立索引
  • 6 加入一筆資料
  • 7 查詢資料
  • 8 如何更改或刪除資料
  • 9 其他sqlite的特別用法
  • 10 小結(jié)

 

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

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

$ sqlite3 foo.db

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


在sqlite3提示列下操作

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

SQLite version 3.1.3
Enter ".help" for instructions
sqlite> 

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


SQL的指令格式

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


建立資料表

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

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

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

這個(gè)create table指令的語法為:

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

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


建立索引

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

create index film_title_index on film(title);

意思是針對(duì)film資料表的name字段,建立一個(gè)名叫film_name_index的索引。這個(gè)指令的語法為

create index index_name on table_name(field_to_be_indexed);

一旦建立了索引,sqlite3會(huì)在針對(duì)該字段作查詢時(shí),自動(dòng)使用該索引。這一切的操作都是在幕后自動(dòng)發(fā)生的,無須使用者特別指令。


加入一筆資料

接下來我們要加入資料了,加入的方法為使用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最強(qiáng)大的select指令了。我們首先簡單介紹select的基本句型:

select columns from table_name where expression;

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

select * from film;

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

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';

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

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

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

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

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

select count(*) from film;

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

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

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


如何更改或刪除資料

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

例如有一筆資料的名字打錯(cuò)了:

update film set starring='Jodie Foster' where starring='Jodee Foster';

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

delete from film where year < 1970;

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


其他sqlite的特別用法

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

sqlite3 film.db "select * from film;"

輸出 HTML 表格:

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

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

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

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

sqlite3 film.db < output.sql

在大量插入資料時(shí),你可能會(huì)需要先打這個(gè)指令:

begin;

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

commit;


小結(jié)

以上我們介紹了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這個(gè)檔案,看看里面有什么料),OpenVanilla從0.7.2開始,也引進(jìn)了以SQLite為基礎(chǔ)的詞匯管理工具,以及全字庫的注音輸入法。因?yàn)槭褂肧QLite,這兩個(gè)模塊不管數(shù)據(jù)庫內(nèi)有多少筆資料,都可以做到「瞬間啟動(dòng)」以及相當(dāng)快速的查詢回應(yīng)。

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

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

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

posted on 2009-10-28 16:30 逛奔的蝸牛 閱讀(5260) 評(píng)論(1)  編輯 收藏 引用 所屬分類: Qt 、其他編程

評(píng)論

# re: Qt:SQLite 3入門教程 2009-11-02 19:57 暗金裝備
SELECT name FROM sqlite_master
WHERE type='table'
ORDER BY name;  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品v国产精品v日韩精品| 国产一区二区激情| 亚洲国产欧美一区二区三区丁香婷| 中文在线资源观看网站视频免费不卡 | 国产欧美一区二区精品婷婷 | 一区二区高清视频在线观看| 亚洲视频一区| 亚洲欧美日韩一区在线| 欧美在线在线| 欧美激情一区二区久久久| 亚洲免费高清视频| 亚洲欧美在线网| 麻豆精品在线视频| 国产精品theporn88| 黄色成人在线网站| 日韩香蕉视频| 香蕉久久国产| 久久综合久久久| 亚洲国产精品一区二区www| 99re视频这里只有精品| 亚洲伊人第一页| 免费亚洲视频| 国产欧美在线视频| 日韩一级裸体免费视频| 久久免费国产精品1| 亚洲精品国产精品久久清纯直播| 亚洲欧美成人在线| 欧美精品国产| 一区视频在线播放| 亚洲综合久久久久| 91久久中文| 久久国产乱子精品免费女| 欧美日韩亚洲一区二区三区在线| 国内精品写真在线观看| 亚洲一区二区三区中文字幕| 欧美电影免费观看高清完整版| 一区二区三区视频在线播放| 久久一区精品| 国产亚洲一区二区精品| 亚洲一级二级| 亚洲三级毛片| 欧美福利一区二区| 亚洲大片精品永久免费| 久久精品视频99| 亚洲自拍偷拍麻豆| 欧美日韩在线播放一区| 日韩写真视频在线观看| 欧美激情亚洲视频| 麻豆乱码国产一区二区三区| 国内精品视频一区| 久久九九有精品国产23| 亚洲自拍另类| 国产亚洲精品一区二555| 香蕉久久精品日日躁夜夜躁| 亚洲精品久久视频| 欧美激情中文字幕一区二区 | 国产午夜亚洲精品理论片色戒| 亚洲新中文字幕| 一区二区三区福利| 国产精品久久久久久久7电影| 一区二区三区精品视频| 亚洲欧洲日韩女同| 欧美日韩精品一本二本三本| 一区二区三区欧美在线| 亚洲精品在线免费| 欧美日韩免费在线视频| 亚洲在线成人| 午夜精彩视频在线观看不卡 | 亚洲二区在线视频| 欧美成人综合网站| 久久久国际精品| 米奇777在线欧美播放| 久久久之久亚州精品露出| 国内精品伊人久久久久av影院 | 99精品国产在热久久婷婷| 久久成人久久爱| 在线一区二区三区四区| 国产精品乱人伦中文| 欧美伊人久久久久久午夜久久久久 | 久久国产乱子精品免费女| 在线观看日韩国产| 亚洲国产美女| 国产精品国产三级国产专播精品人| 亚洲欧美中文日韩v在线观看| 亚洲欧美日本日韩| 亚洲高清一二三区| 亚洲免费观看| 一区二区视频在线观看| 亚洲精品在线免费观看视频| 国产精品影片在线观看| 欧美二区在线播放| 国产精品卡一卡二| 欧美不卡一区| 国产精品亚洲激情| 亚洲国产美女| 国产婷婷一区二区| 亚洲国产成人av在线| 国产精品欧美日韩久久| 欧美大片在线观看| 国产精品嫩草久久久久| 亚洲成色999久久网站| 亚洲国产毛片完整版| 亚洲国产一区二区三区a毛片| 国产精品久久久久久久久久免费| 老牛影视一区二区三区| 欧美丝袜一区二区三区| 蘑菇福利视频一区播放| 国产精品美腿一区在线看 | 亚洲欧美日韩一区在线| 亚洲精品日本| 久久久久国产成人精品亚洲午夜| 亚洲午夜精品一区二区| 久久在线播放| 国产欧美精品va在线观看| 亚洲欧洲在线观看| 尤物99国产成人精品视频| 亚洲视频网在线直播| 99亚洲精品| 欧美激情综合色| 欧美成人免费在线| 伊人久久大香线蕉综合热线 | 欧美好骚综合网| 国产又爽又黄的激情精品视频| 国产日韩精品一区二区三区在线| 午夜欧美视频| 欧美日韩亚洲一区在线观看| 欧美国产一区二区| 国内精品久久久久久久影视麻豆| 在线午夜精品自拍| 亚洲午夜黄色| 欧美亚州一区二区三区| 日韩一本二本av| 一区二区三区日韩在线观看| 欧美不卡在线| 亚洲国产欧美日韩另类综合| 亚洲精品1区2区| 欧美激情自拍| 中日韩视频在线观看| 亚洲午夜av在线| 国产精品女主播在线观看| 亚洲午夜视频在线| 久久国产视频网站| 狠狠久久五月精品中文字幕| 午夜精品亚洲一区二区三区嫩草| 欧美一区二区在线视频| 国产乱码精品一区二区三区av| 亚洲香蕉成视频在线观看 | 欧美激情欧美狂野欧美精品 | 国产自产2019最新不卡| 欧美一区二区高清在线观看| 久久久久88色偷偷免费| 国产亚洲毛片在线| 久久久综合网站| 亚洲国产成人av在线| 一本久久综合亚洲鲁鲁五月天| 欧美午夜一区二区| 亚欧成人精品| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品网站在线播放| 久久国产日韩| 亚洲日本免费| 久久激情综合| 亚洲精品中文字幕有码专区| 国产精品白丝黑袜喷水久久久| 午夜精品一区二区三区四区| 欧美成人a视频| 亚洲欧美日韩国产综合| 激情综合在线| 欧美小视频在线| 久久久久久久91| 一区二区三区日韩精品视频| 久久亚洲一区| 亚洲婷婷综合久久一本伊一区| 国产日韩一区二区| 欧美大片一区二区三区| 亚洲欧美电影在线观看| 亚洲国产成人不卡| 久久av免费一区| 一本久道久久综合中文字幕| 国产亚洲欧美色| 欧美日韩一区在线播放| 久久久久久综合网天天| 亚洲性线免费观看视频成熟| 欧美成人综合网站| 欧美成人中文字幕在线| 亚洲亚洲精品在线观看| 在线不卡亚洲| 国产日韩欧美在线| 欧美视频中文字幕在线| 免费成人在线观看视频| 欧美一区永久视频免费观看| 亚洲精品中文字幕在线| 美国三级日本三级久久99| 欧美一区二区三区在线看| 中日韩视频在线观看| 亚洲日本aⅴ片在线观看香蕉| 国内伊人久久久久久网站视频| 国产精品国产自产拍高清av王其 | 欧美不卡高清| 久久久久久久综合色一本|