Sqlite使用說明
OS X自從10.4後把SQLite這套相當出名的資料庫軟體,放進了作業系統工具集裡。OS X包裝的是第三版的SQLite,又稱SQLite3。這套軟體有幾個特色:
- 軟體屬於公共財(public domain),SQLite可說是某種「美德軟體」(virtueware),作者本人放棄著作權,而給使用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. 願你寬心與人分享,所取不多於你所施予
- 支援大多數的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命令列選項等幾個專案做簡單的介紹。
目錄[隱藏] |
用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入(以下$符號為shell提示號,請勿鍵入): 如果目錄下沒有foo.db,sqlite3就會建立這個資料庫。sqlite3並沒有強制資料庫檔名要怎麼取,因此如果你喜歡,也可以取個例如foo.icannameitwhateverilike的檔名。 進入了sqlite3之後,會看到以下文字: 這時如果使用.help可以取得求助,.quit則是離開(請注意:不是quit) 所以的SQL指令都是以分號(;)結尾的。如果遇到兩個減號(--)則代表註解,sqlite3會略過去。 假設我們要建一個名叫film的資料表,只要鍵入以下指令就可以了: 這樣我們就建立了一個名叫film的資料表,裡面有name、length、year、starring四個欄位。 這個create table指令的語法為: table_name是資料表的名稱,fieldx則是欄位的名字。sqlite3與許多SQL資料庫軟體不同的是,它不在乎欄位屬於哪一種資料型態:sqlite3的欄位可以儲存任何東西:文字、數字、大量文字(blub),它會在適時自動轉換。 如果資料表有相當多的資料,我們便會建立索引來加快速度。好比說: 意思是針對film資料表的name欄位,建立一個名叫film_name_index的索引。這個指令的語法為 一旦建立了索引,sqlite3會在針對該欄位作查詢時,自動使用該索引。這一切的操作都是在幕後自動發生的,無須使用者特別指令。 接下來我們要加入資料了,加入的方法為使用insert into指令,語法為: 例如我們可以加入 如果該欄位沒有資料,我們可以填NULL。 講到這裡,我們終於要開始介紹SQL最強大的select指令了。我們首先簡單介紹select的基本句型: 最常見的用法,當然是倒出所有資料庫的內容: 如果資料太多了,我們或許會想限制筆數: 或是照著電影年份來排列: 或是年份比較近的電影先列出來: 或是我們只想看電影名稱跟年份: 查所有茱蒂佛斯特演過的電影: 查所有演員名字開頭叫茱蒂的電影('%' 符號便是 SQL 的萬用字元): 查所有演員名字以茱蒂開頭、年份晚於1985年、年份晚的優先列出、最多十筆,只列出電影名稱和年份: 有時候我們只想知道資料庫一共有多少筆資料: 有時候我們只想知道1985年以後的電影有幾部: (進一步的各種組合,要去看SQL專書,不過你大概已經知道SQL為什麼這麼流行了:這種語言允許你將各種查詢條件組合在一起──而我們還沒提到「跨資料庫的聯合查詢」呢!) 瞭解select的用法非常重要,因為要在sqlite更改或刪除一筆資料,也是靠同樣的語法。 例如有一筆資料的名字打錯了: 就會把主角欄位裡,被打成'Jodee Foster'的那筆(或多筆)資料,改回成Jodie Foster。 就會刪除所有年代早於1970年(不含)的電影了。 sqlite可以在shell底下直接執行命令: 輸出 HTML 表格: 將資料庫「倒出來」: 利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫備份了): 在大量插入資料時,你可能會需要先打這個指令: 插入完資料後要記得打這個指令,資料才會寫進資料庫中: 以上我們介紹了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)裡所說的至人了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442646/,如需轉載,請註明出處,否則將追究法律責任。
建立資料庫檔案
$ sqlite3 foo.db
在sqlite3提示列下操作
SQLite version 3.1.3Enter ".help" for instructionssqlite>
SQL的指令格式
建立資料表
create table film(title, length, year, starring);
create table table_name(field1, field2, field3, ...);
建立索引
create index film_title_index on film(title);
create index index_name on table_name(field_to_be_indexed);
加入一筆資料
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');
查詢資料
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';
select * from film where starring like 'Jodie%';
select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10;
select count(*) from film;
select count(*) from film where year >= 1985;
如何更改或刪除資料
update film set starring='Jodie Foster' where starring='Jodee Foster';
delete from film where year < 1970;
其他sqlite的特別用法
sqlite3 film.db "select * from film;"
sqlite3 -html film.db "select * from film;"
sqlite3 film.db ".dump" > output.sql
sqlite3 film.db < output.sql
begin;
commit;
小結
相關文章
- 使用說明
- FreeSql 使用說明SQL
- postman 使用說明Postman
- QLExpress使用說明Express
- WebApiClientCore使用說明WebAPIclient
- Jupiter 使用說明
- certbot 使用說明
- cmake使用說明
- ApplicationContextAware使用說明APPContext
- oradebug的使用說明
- axios使用說明書iOS
- wc 命令使用說明
- oracle orapwd使用說明Oracle
- JPA EntityManager使用說明
- markdown使用小說明
- C# BitmapData使用說明C#
- jarsigner 簡單使用說明JAR
- OpenGrok簡單使用說明
- cityAreaSelect.js使用說明JS
- 微前端說明以及使用前端
- JavaScript の querySelector 使用說明JavaScript
- Docker 使用者操作使用說明Docker
- DataTables表格外掛使用說明
- mysql支援原生json使用說明MySqlJSON
- Kibana安裝及使用說明
- GoldenGate HANDLECOLLISIONS引數使用說明Go
- DataLakeAnalytics中OSSLOCATION的使用說明
- 關於 Jupyter 的使用說明
- scapy函式 IP() 使用說明函式
- 舉例說明如何使用WebSQL?WebSQL
- 說明
- [Android開源框架]RxHttp使用說明Android框架HTTP
- Windows linux子系統 使用說明WindowsLinux
- PHP 有限狀態機使用說明PHP
- mydumper和myloader引數使用說明
- mysql5.7 General tablespace使用說明MySql
- RedisTemplate常用集合使用說明-opsForZSet(六)Redis
- RedisTemplate常用集合使用說明-boundSetOps(九)Redis
- Flask-Limit使用詳細說明FlaskMIT