循序漸進(jìn)SQLite2

<h3>SQLite命令</h3>
基于命令的操作性質(zhì)可分為:

  • DDL:數(shù)據(jù)定義語言
命令 描述
CREATE 創(chuàng)建一個(gè)新的表算色,一個(gè)表的視圖套才,或者數(shù)據(jù)庫中的其他對(duì)象
DROP 刪除整個(gè)表迈螟,或者表的視圖,或者數(shù)據(jù)庫中的其他對(duì)象
ALTER 修改數(shù)據(jù)庫中的某個(gè)已有的數(shù)據(jù)庫對(duì)象,比如一個(gè)表
  • DQL:數(shù)據(jù)查詢語言
命令 描述
SELECT 從一個(gè)或多個(gè)表中檢索某些記錄
  • DML:數(shù)據(jù)操作語言
命令 描述
INSERT 創(chuàng)建一條記錄
UPDATE 修改記錄
DELETE 刪除記錄

<h3>SQLite常用數(shù)據(jù)類型</h3>

  • SQLite存儲(chǔ)類
存儲(chǔ)類 描述
NULL 值是一個(gè)NULL值
INTEGER 值是一個(gè)帶符號(hào)的整數(shù),根據(jù)值的大小存儲(chǔ)在1、2搂擦、3、4哗脖、6或8字節(jié)中
REAL 值是一個(gè)浮點(diǎn)值瀑踢,存儲(chǔ)為8字節(jié)的IEEE浮點(diǎn)數(shù)字
TEXT 值是一個(gè)文本字符串,使用數(shù)據(jù)庫編碼(UTF-8才避、UTF-16BE或UTF-16LE)存儲(chǔ)
BLOB 值是一個(gè)bolb數(shù)據(jù)丘损,完全根據(jù)它的輸入存儲(chǔ)
  • Date與Time數(shù)據(jù)類型
存儲(chǔ)類 描述
TEXT 格式為"YYYY-MM-DD HH:MM:SS.SSS" 的日期
REAL 從公元前4714年11月24日格林尼治時(shí)間的正午開始算起的天數(shù)
INTEGER 從1970-01-01 00:00:00 UTC算起的秒數(shù)

<h3>操作命令</h3>
打開終端,輸入sqlite3 testDB.db工扎。此命令將在當(dāng)前目錄下創(chuàng)建好一個(gè)文件testDB.db,該文件將被SQLite引擎用作數(shù)據(jù)庫衔蹲,可以注意到sqlite3命令在成功創(chuàng)建數(shù)據(jù)庫文件后肢娘,將提供一個(gè)sqlite>提示符。使用點(diǎn)命令.databases檢查創(chuàng)建的數(shù)據(jù)庫是否在數(shù)據(jù)庫列表中舆驶。

SQLite創(chuàng)建create表####

SQLite的create table (<b>需要注意的是:SQLite是不區(qū)分大小寫的橱健,但有些命令是大小寫敏感的,比如GLOB和glob在SQLite的語句中有不同的含義沙廉。</b>) 語句用于在任何給定的數(shù)據(jù)庫創(chuàng)建一個(gè)新表拘荡。創(chuàng)建基本表,涉及到命名表撬陵、定義列表及每一列的數(shù)據(jù)類型珊皿。基本語法如下:

create table database_name.table_name( column1 datatype primary key, column2 datatype, column3 datatype, ...... columnN datatype);

可以使用.tables命令來驗(yàn)證表是否已成功創(chuàng)建巨税,該命令用于列出數(shù)據(jù)庫中的所有表蟋定。.schema命令則可以得到表的完整信息。

SQLite刪除drop表####

SQLite的drop table語句用來刪除表定義及其所有相關(guān)數(shù)據(jù)草添、索引驶兜、觸發(fā)器、約束和該表的權(quán)限規(guī)范远寸。注意使用此命令抄淑,一旦一個(gè)表被刪除,表中所有信息也將永遠(yuǎn)丟失驰后。

drop table database_name.table_name;

SQLite Insert語句####

SQLite的insert into 語句用于向數(shù)據(jù)庫的某個(gè)表中添加新的數(shù)據(jù)行肆资。基本語法:

insert into table_name (column1,column2,column3,...columnN)values(value1,value2,value3,...valueN);

此處的column1,column2,...columnN為要插入數(shù)據(jù)的表中的列的名稱灶芝。如果要給表中的所有列添加值迅耘,可以不指定列名稱贱枣,但是務(wù)必要確保值的順序與列在表中的順序一致。即:

insert into table_name values(value1,value2,value3,...valueN);

SQLite Select語句####

SQLite的select語句用于從SQLite數(shù)據(jù)庫中獲取數(shù)據(jù)颤专,以結(jié)果表的形式返回?cái)?shù)據(jù)纽哥。基本語法:

select column1,column2,columnN from table_name;

如果想要獲取所有的可用的字段栖秕,則可以使用下面的語法:

select * from table_name;

SQLite Where子句####

SQLite的where子句用于指定從一個(gè)表或多個(gè)表中獲取數(shù)據(jù)的條件春塌。如果滿足給定的條件,即為真(ture)時(shí)簇捍,則從表中返回特定的值只壳。可以使用where子句來過濾記錄,只獲取需要的記錄暑塑。where子句不僅可以用在select語句中吼句,還可以用在update、delete語句中事格,等等惕艳。基本語法:

select column1,column2,columnN from table_name where [condition];

SQLite運(yùn)算符####

運(yùn)算符是一個(gè)保留字或字符驹愚,主要用于 SQLite 語句的 WHERE 子句中執(zhí)行操作远搪,如比較和算術(shù)運(yùn)算。運(yùn)算符用于指定 SQLite 語句中的條件逢捺,并在語句中連接多個(gè)條件谁鳍。

  • 算術(shù)運(yùn)算符
運(yùn)算符 描述
+ 加法:將運(yùn)算符兩邊的值相加
- 減法:左操作數(shù)減去右操作數(shù)
* 乘法:把運(yùn)算符兩邊的值相乘
/ 除法:左操作數(shù)除以右操作數(shù)
% 取模:左操作數(shù)除以右操作數(shù)后得到的余數(shù)
  • 比較運(yùn)算符
運(yùn)算符 描述
== 檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真
= 檢查兩個(gè)操作數(shù)的值是否相等劫瞳,如果相等則條件為真
!= 檢查兩個(gè)操作數(shù)的值是否相等倘潜,如果不相等則條件為真
<> 檢查兩個(gè)操作數(shù)的值是否相等,如果不相等則條件為真
> 檢查左操作數(shù)的值是否大于右操作數(shù)的值志于,如果是則條件為真
< 檢查左操作數(shù)的值是否小于右操作數(shù)的值窍荧,如果是則條件為真
>= 檢查左操作數(shù)的值是否大于等于右操作數(shù)的值,如果是則條件為真
<= 檢查左操作數(shù)的值是否小于等于右操作數(shù)的值恨憎,如果是則條件為真
!< 檢查左操作數(shù)的值是否不小于右操作數(shù)的值蕊退,如果是則條件為真
!> 檢查左操作數(shù)的值是否不大于右操作數(shù)的值,如果是則條件為真
  • 邏輯運(yùn)算符
運(yùn)算符 描述
AND AND 運(yùn)算符允許在一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件的存在
BETWEEN BETWEEN 運(yùn)算符用于在給定最小值和最大值范圍內(nèi)的一系列值中搜索值
EXISTS EXISTS 運(yùn)算符用于在滿足一定條件的指定表中搜索行的存在
IN IN 運(yùn)算符用于把某個(gè)值與一系列指定列表的值進(jìn)行比較
NOT IN IN 運(yùn)算符的對(duì)立面憔恳,用于把某個(gè)值與不在一系列指定列表的值進(jìn)行比較
LIKE LIKE 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較
GLOB GLOB 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較瓤荔。GLOB 與 LIKE 不同之處在于,它是大小寫敏感的
NOT NOT 運(yùn)算符是所用的邏輯運(yùn)算符的對(duì)立面钥组。比如 NOT EXISTS输硝、NOT BETWEEN、NOT IN程梦,等等点把。它是否定運(yùn)算符
OR OR 運(yùn)算符用于結(jié)合一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件
IS NULL NULL 運(yùn)算符用于把某個(gè)值與 NULL 值進(jìn)行比較
IS IS 運(yùn)算符與 = 相似
IS NOT IS NOT 運(yùn)算符與 != 相似
UNIQUE UNIQUE 運(yùn)算符搜索指定表中的每一行橘荠,確保唯一性(無重復(fù))
  • 位運(yùn)算符

SQLite Update語句####

SQLite的update查詢用于修改表中的已有的記錄,和set一起使用郎逃「缤可以使用帶有where子句的update查詢來更新選定行,否則所有的行都會(huì)被更新褒翰≈福基本語法:

update table_name 
set column1 = value1, column2 = value2...,columnN = valueN 
where [condition];

SQLite Delete語句####

SQLite的delete用于刪除表中的已有的記錄,可以使用帶有where子句的delete來刪除選定行优训,否則所有的記錄都會(huì)被刪除朵你。基本語法:

delete from table_name where [condition];

SQLite Like子句####

SQLite的like運(yùn)算符是用來匹配通配符指定模式的文本值揣非。如果搜索表達(dá)式與模式表達(dá)式匹配抡医,like運(yùn)算符將返回真(true),也就是1。有兩個(gè)通配符與like運(yùn)算符一起使用早敬。百分號(hào)(%)下劃線(_)忌傻。百分號(hào)代表零個(gè)、一個(gè)或多個(gè)數(shù)字或字符搁嗓。下劃線代表一個(gè)單一的數(shù)字或字符。這些符號(hào)可以被組合使用箱靴∠俟洌基本語法:

select from table_name where column like 'xxxx%';
或者
select from table_name where column like '%xxxx%';
或者
select from table_name where column like 'xxxx_';
或者
select from table_name where column like '_xxxx';
或者
select from table_name where column like '_xxxx_';

下面給出一些實(shí)例演示帶有'%'和'_'運(yùn)算符的like子句的不同的地方:

語句 描述
where column like 'hi%' 查找以hi開頭的任意值
where column like '%hi%' 查找任意位置包含hi的任意值
where column like '_hi%' 查找第二位和第三位為hi的任意值
where column like 'h_%_%' 查找以h開頭,且長度至少為3個(gè)字符的任意值
where column like '%h' 查找以h結(jié)尾的任意值
where column like '_h%i' 查找第二位為h衡怀,且以i結(jié)尾的任意值
where column like 'h___i' 查找長度為5位數(shù)棍矛,且以h開頭以i結(jié)尾的任意值

SQLite Order By排序####

SQLite的order by子句是用來基于一個(gè)或多個(gè)列按升序或降序順序排列數(shù)據(jù)。ASC表示升序抛杨,DESC表示降序够委。基本語法:

select column-list 
from table_name
[where condition] 
[order by column1,column2, .. columnN] [ASC | DESC];

SQLite Group By分組####

SQLite的group by子句用于與select語句一起使用怖现,來對(duì)相同的數(shù)據(jù)進(jìn)行分組茁帽。在select語句中,group by子句放在where子句之后屈嗤,放在order by子句之前潘拨。基本語法:

select column-list
from table_name where [condition]
group by column1,column2,...columnN
order by column1,column2,...columnN;

SQLite Distinct關(guān)鍵字####

SQLite的Distinct 關(guān)鍵字與select語句一起使用饶号,來消除所有重復(fù)的記錄铁追,并只獲取唯一一次記錄。有可能出現(xiàn)一種情況茫船,在一個(gè)表中有多個(gè)重復(fù)的記錄琅束。當(dāng)提取這樣的記錄時(shí)扭屁,distinct關(guān)鍵字就顯得很有意義了∩鳎基本語法:

select distinct column1,column2,...columnN
from table_name
where [condition];

SQLite Alter命令####

SQLite的alter table命令不通過執(zhí)行一個(gè)完整的轉(zhuǎn)儲(chǔ)和數(shù)據(jù)的重載來修改已有的表料滥。可以使用alter table語句重命名表埋泵,使用alter table語句還可以在已有的 表中添加額外的列幔欧。基本語法:

重命名表:
alter table database_name.table_name rename to new_table_name;
在已有的表中添加一個(gè)新的列:
alter table database_name.table_name add column column_definition...;
實(shí)例:
alter table person add column sex char(1);

SQLite AND/OR 運(yùn)算符####

SQLite的AND和OR運(yùn)算符用于編譯多個(gè)條件來縮小在SQLite語句中的所選的數(shù)據(jù)丽声。這兩個(gè)運(yùn)算符被稱為連接運(yùn)算符礁蔗。

  • AND運(yùn)算符
    AND 運(yùn)算符允許在一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件的存在。使用 AND 運(yùn)算符時(shí)雁社,只有當(dāng)所有條件都為真(true)時(shí)浴井,整個(gè)條件為真(true)。例如霉撵,只有當(dāng) condition1 和 condition2 都為真(true)時(shí)磺浙,[condition1] AND [condition2] 為真(true)⊥狡拢基本語法:
select column1,column2,...columnN  
from table_name
where [condition] and [condition2]...and [conditionN]; 
  • OR 運(yùn)算符
    OR 運(yùn)算符也用于結(jié)合一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件撕氧。使用 OR 運(yùn)算符時(shí),只要當(dāng)條件中任何一個(gè)為真(true)時(shí)喇完,整個(gè)條件為真(true)伦泥。例如,只要當(dāng) condition1 或 condition2 有一個(gè)為真(true)時(shí)锦溪,[condition1] OR [condition2] 為真(true)不脯。
select column1,column2,...columnN 
from table_name 
where [condition] or [condition2]...or [conditionN]; 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刻诊,隨后出現(xiàn)的幾起案子防楷,更是在濱河造成了極大的恐慌,老刑警劉巖则涯,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件复局,死亡現(xiàn)場離奇詭異,居然都是意外死亡粟判,警方通過查閱死者的電腦和手機(jī)肖揣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮入,“玉大人龙优,你說我怎么就攤上這事。” “怎么了彤断?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵野舶,是天一觀的道長。 經(jīng)常有香客問我宰衙,道長平道,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任供炼,我火速辦了婚禮一屋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袋哼。我一直安慰自己冀墨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布涛贯。 她就那樣靜靜地躺著诽嘉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弟翘。 梳的紋絲不亂的頭發(fā)上虫腋,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音稀余,去河邊找鬼悦冀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛睛琳,可吹牛的內(nèi)容都是我干的盒蟆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掸掏,長吁一口氣:“原來是場噩夢啊……” “哼茁影!你這毒婦竟也來了宙帝?” 一聲冷哼從身側(cè)響起丧凤,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎步脓,沒想到半個(gè)月后愿待,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靴患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年仍侥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸳君。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡农渊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出或颊,到底是詐尸還是另有隱情砸紊,我是刑警寧澤传于,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站醉顽,受9級(jí)特大地震影響沼溜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜游添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一系草、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唆涝,春花似錦找都、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啰扛,卻和暖如春嚎京,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隐解。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工鞍帝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煞茫。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓帕涌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親续徽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚓曼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 5,445評(píng)論 0 33
  • 數(shù)據(jù)庫入門 數(shù)據(jù)庫: 保存有組織的數(shù)據(jù)的容器(通常是一個(gè)文件或一組文件).數(shù)據(jù)庫軟件應(yīng)該稱為 DBMS(DataB...
    Mjericho閱讀 498評(píng)論 0 0
  • MySQL技術(shù)內(nèi)幕:SQL編程 姜承堯 第1章 SQL編程 >> B是由MySQL創(chuàng)始人之一Monty分支的一個(gè)版...
    沉默劍士閱讀 2,428評(píng)論 0 3
  • 【學(xué)號(hào)】2017101304 【姓名】張敬藝 【性別】女 【城市】山西省晉中市 【簡書號(hào)】張敬藝 【擅長】長跑 登...
    張敬藝閱讀 188評(píng)論 1 0
  • 晚上和阿貓聊天,貓貓昨天夢到我們?cè)谝粔K要刷睡覺客情,這是三個(gè)月后的場景啊其弊,開心!掛住您膀斋。 一大早送宋志去高鐵梭伐,也是一段...
    聶一一閱讀 110評(píng)論 0 0