ios 開發中創建索引並查詢

如下咱們就創建數據庫、創建資料表及索引、新增資料、查詢資料、更改資料、移除資料、 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;
相關文章
相關標籤/搜索