iOS mac終端下的SQL語句

//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄

我們都知道數(shù)據(jù)庫的創(chuàng)建可以借助圖形化的數(shù)據(jù)庫工具軟件,但也可以在Mac終端下來直接使用代碼創(chuàng)建。下面介紹怎樣建立數(shù)據(jù)庫、建立資料表、建立索引、數(shù)據(jù)的增、刪、改、查以及sqlite3命令列選項(xiàng)等。

建立數(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ā)生的,無須使用者特別指令。

增加數(shù)據(jù)

接下來我們要插入數(shù)據(jù)了,加入的方法為使用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。

刪除數(shù)據(jù)

delete from film where year < 1970;

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

更改數(shù)據(jù)

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

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

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

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

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

講到這里,我們終于要開始介紹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;

其他sqlite的特別用法

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

sqlite3 film.db "select * from film;"

輸出 HTML 表格:

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

將數(shù)據(jù)庫「導(dǎo)出來」:

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;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用的過程根據(jù)使用的函數(shù)大致分為如下幾個(gè)過程: sqlite3_open() sqlite3_prepare() ...
    隨風(fēng)飄蕩的小逗逼閱讀 6,888評(píng)論 0 3
  • 50個(gè)常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,339評(píng)論 0 7
  • 語 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,242評(píng)論 0 53
  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 6,020評(píng)論 0 33
  • 超級(jí)好吃 新開業(yè)每個(gè)單品減10元 連忙拉著裘同學(xué)再買一個(gè) 傻人有傻福 還送了一個(gè)禮物 開心
    PWong閱讀 226評(píng)論 0 0

友情鏈接更多精彩內(nèi)容