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

逛奔的蝸牛

我不聰明,但我會很努力

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

OS X自從10.4后把SQLite這套相當出名的數據庫軟件,放進了作業系統工具集里。OS X包裝的是第三版的SQLite,又稱SQLite3。這套軟件有幾個特色:

  • 軟件屬于公共財(public domain),SQLite可說是某種「美德軟件」(virtueware),作者本人放棄著作權,而給使用SQLite的人以下的「祝?!梗╞lessing):
    • 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. 愿你寬心與人分享,所取不多于你所施予
  • 支援大多數的SQL指令(下面會簡單介紹)。
  • 一個檔案就是一個數據庫。不需要安裝數據庫服務器軟件。
  • 完整的Unicode支援(因此沒有跨語系的問題)。
  • 速度很快。

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

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

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


目錄

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

 

建立數據庫檔案

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

$ sqlite3 foo.db

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


在sqlite3提示列下操作

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

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

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


SQL的指令格式

所以的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%';

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

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

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

select count(*) from film;

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

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;

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


其他sqlite的特別用法

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,這兩個模塊不管數據庫內有多少筆資料,都可以做到「瞬間啟動」以及相當快速的查詢回應。

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

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

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

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

評論

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲特级片在线| 欧美日韩高清一区| 亚洲一区二区三区成人在线视频精品| 亚洲一区二区黄色| 91久久黄色| 久久精品国产欧美亚洲人人爽| 欧美日韩国产免费观看| 亚洲激情在线激情| 欧美a级大片| 久久野战av| 91久久在线播放| 欧美成人综合在线| 久色成人在线| 亚洲精品在线三区| 亚洲日本aⅴ片在线观看香蕉| 美女尤物久久精品| 亚洲精品美女久久7777777| 亚洲国产成人高清精品| 欧美二区乱c少妇| 99国产精品久久| 一区二区三区国产在线| 国产精品v片在线观看不卡 | 亚洲砖区区免费| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品xxxxbbbb| 亚洲免费在线精品一区| 午夜一区二区三区在线观看| 亚洲成人在线观看视频| 久久精品女人天堂| 欧美在线看片a免费观看| 国产在线精品二区| 欧美高清视频www夜色资源网| 欧美1区视频| 亚洲视频在线观看视频| 亚洲欧美欧美一区二区三区| 国产一区二区毛片| 欧美激情亚洲自拍| 国产精品黄色| 久久综合一区二区三区| 美女在线一区二区| 亚洲欧美日韩精品久久| 久久精品亚洲国产奇米99| 亚洲国产精品成人| 正在播放欧美视频| 禁断一区二区三区在线| 亚洲三级影片| 国内激情久久| 一二三四社区欧美黄| 国产精品日韩欧美| 亚洲东热激情| 国产视频一区二区在线观看 | 亚洲福利小视频| 国产精品久久久久77777| 久久久久国产一区二区| 欧美国产精品中文字幕| 欧美一级片久久久久久久| 老**午夜毛片一区二区三区| 欧美国产极速在线| 久久成人精品| 欧美日韩国产片| 老司机免费视频一区二区三区 | 精品成人久久| aa亚洲婷婷| 亚洲精品国产精品国自产在线 | 国产精品日韩欧美一区| 亚洲国产精品毛片| 国产在线一区二区三区四区| 日韩午夜一区| 91久久精品美女| 久久国产精彩视频| 亚洲欧美综合另类中字| 欧美激情一区二区三区成人| 狼狼综合久久久久综合网| 国产精品欧美一区二区三区奶水| 欧美黄色网络| 雨宫琴音一区二区在线| 午夜精品久久久99热福利| 亚洲手机在线| 欧美日韩国产首页在线观看| 欧美成人69| 一区二区在线视频| 欧美专区一区二区三区| 欧美一区视频在线| 国产精品视频导航| 亚洲一级电影| 香蕉久久夜色精品国产使用方法| 性色av一区二区三区| 欧美在线免费视频| 欧美诱惑福利视频| 国产精品福利网站| 中文欧美在线视频| 亚洲欧美视频一区| 国产精品日韩精品欧美精品| 亚洲视频播放| 久久狠狠久久综合桃花| 国产日韩欧美a| 久久精品国产免费看久久精品| 久久琪琪电影院| 精品动漫一区二区| 麻豆精品91| 亚洲激情校园春色| 国产精品99久久久久久人| 欧美午夜三级| 欧美一级久久久| 免费在线一区二区| 亚洲三级影院| 国产精品白丝av嫩草影院| 亚洲男人天堂2024| 久久婷婷国产综合尤物精品| 伊人成综合网伊人222| 欧美不卡在线| 99亚洲伊人久久精品影院红桃| 亚洲综合二区| 国产日韩欧美精品在线| 久久亚洲欧美| 亚洲精品日韩在线| 久久成人免费| 日韩午夜在线观看视频| 欧美日韩一区二区三区视频| 亚洲免费伊人电影在线观看av| 久久亚洲国产精品一区二区| 欧美综合77777色婷婷| 久热re这里精品视频在线6| 91久久精品网| 国产精品嫩草99av在线| 久久久久久69| 99精品热视频只有精品10| 欧美在线精品一区| 亚洲人成在线播放| 国产精品伊人日日| 久久综合影视| 亚洲免费综合| 亚洲精品男同| 久久人人爽国产| 亚洲主播在线播放| 亚洲二区精品| 国产欧美精品一区aⅴ影院| 亚洲激情电影在线| 久久婷婷麻豆| 午夜免费在线观看精品视频| 亚洲国产高清自拍| 国产精品爽黄69| 欧美激情综合色| 久久久噜噜噜久久狠狠50岁| 亚洲一区二区精品视频| 亚洲国产99精品国自产| 久久精品水蜜桃av综合天堂| 日韩午夜在线电影| 亚洲大胆在线| 国产亚洲va综合人人澡精品| 欧美日韩精品二区| 麻豆成人在线观看| 欧美在线www| 亚洲欧美日韩一区二区三区在线| 亚洲大胆人体在线| 久久动漫亚洲| 午夜精品久久久久久99热| 99综合在线| 亚洲日韩欧美视频一区| 欧美日韩亚洲一区二区三区四区| 在线视频亚洲一区| 国产精品久久久久久久久免费樱桃| 久久er99精品| 亚洲综合色网站| 亚洲看片网站| 欧美成人乱码一区二区三区| 新片速递亚洲合集欧美合集| 亚洲日本无吗高清不卡| 99在线精品观看| 免费在线欧美黄色| 欧美一级欧美一级在线播放| 日韩一区二区精品在线观看| 欧美不卡在线视频| 久久手机免费观看| 欧美一区二区三区视频在线观看 | 午夜在线视频观看日韩17c| 亚洲手机成人高清视频| 亚洲人成在线播放| 亚洲高清视频一区| 亚洲成人直播| 亚洲高清免费在线| 欧美激情亚洲自拍| 亚洲人成亚洲人成在线观看| 亚洲日本电影| 亚洲精品一区二区三区不| 亚洲精品日韩激情在线电影| 99re8这里有精品热视频免费| 亚洲人体偷拍| 亚洲国产中文字幕在线观看| 亚洲精品资源| 亚洲一二区在线| 久久久www免费人成黑人精品| 欧美视频精品一区| 欧美在线视频在线播放完整版免费观看| 亚洲一区久久| 99视频日韩| 在线午夜精品| 久久爱www久久做| 久久亚洲美女| 欧美剧在线免费观看网站|