1.數(shù)據(jù)類型
NULL 空
INTEGER 整形
REAL 浮點(diǎn)
TEXT 文本
BLOB 二進(jìn)制數(shù)據(jù)
沒有對(duì)應(yīng)的Boolean和Date類型嫂侍,需要轉(zhuǎn)成其他類型
2.運(yùn)算符
2.1算術(shù)運(yùn)算符
+ 加
- 減
* 乘
/ 取除
% 取余
2.2比較運(yùn)算符
= 等于
!= 不等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
2.3邏輯運(yùn)算符
and 并 用于where子句多個(gè)條件同時(shí)存在
or 或
between 在某個(gè)范圍內(nèi) 银伟,和and 搭配
exists 表中搜索行的存在穴亏。
in 把某個(gè)值與一系列指定列表的值進(jìn)行比較
not in in的對(duì)立面
like 用來匹配文本和數(shù)字 %:0、1或多個(gè)字符 _單一字符或數(shù)字
glob 用來匹配文本和數(shù)字區(qū)分大小寫 *:0缝彬、1或多個(gè)字符 ?單一字符或數(shù)字
is 與=相似
is null 與null比較
|| 連接兩個(gè)不同的字符串,得到一個(gè)新的字符串丑掺。
unique 運(yùn)算符搜索指定表中的每一行,確保唯一性(無重復(fù))述雾。
3.創(chuàng)建表
create table 表名(列名1 type,.....)
3.1.創(chuàng)建表并添加主鍵
create table 表名(列名1 type not null primary key ,列名2 type,.....)
3.2.創(chuàng)建表并自動(dòng)添加主鍵
create table 表名(列名1 INTRGER primary key autoincrement ,列名2 type,.....)
autoincrement 自動(dòng)遞增
3.3.表不存在時(shí)才創(chuàng)建
create table if not exists 表名(列名1 INTRGER primary key autoincrement ,列名2 type,.....)
4.刪除表
drop table 表名
5.插入
insert into 表名 values(值1,值2,值3.....)
注意:values后面應(yīng)該將所有列的值附上街州,否則插入會(huì)失敗
插入一條數(shù)據(jù)給部分列賦值,其余為空玻孟。not null修飾的列必須賦值
insert into 表名(列1,列2....) values(值1,值2.....)
6.查找
6.1查詢表所有列的數(shù)據(jù)
select * from 表名
6.2.查詢表某列的數(shù)據(jù)
select 列1,列2 from 表名
6.3.查詢某列不重復(fù)的值
distinct 與select一起使用唆缴,消除所有重復(fù)記錄
select distinct 列名 from 表名稱
6.4.帶條件查詢
select 列名 from 表名 where 列 = xx
- like用法
用來匹配文本和數(shù)字 %:0、1或多個(gè)字符 _單一字符或數(shù)字
如:查詢sh開頭的結(jié)果
select * from 表名 where 列名 like 'sh%'
如:查詢第二位為s的結(jié)果
select * from 表名 where 列名 like '_s%' - glob用法
與like類似取募,區(qū)分大小寫
*:0琐谤、1或多個(gè)字符 ?:單一字符或數(shù)字
如:查詢第二位為S的結(jié)果
select *from 表名 where 列名 glob '?S*' - limit用法
限制返回?cái)?shù)據(jù)條數(shù),與offset 配合可以從特定的偏移開始返回?cái)?shù)據(jù)
select *from 表名 limit 數(shù)據(jù)條數(shù) offset 偏移 - order by 用法
asc 升序(可選) desc 降序
升序
select * from 表名 order by 列名
降序
select * from 表名 order by 列名 desc - group by 用法
SQLite 的 group by 子句用于與 select 語句一起使用玩敏,來對(duì)相同的數(shù)據(jù)進(jìn)行分組斗忌。
在 select 語句中,group by 子句放在 where 子句之后旺聚,放在 order by 子句之前织阳。
如:select 列 函數(shù)... group by 列 order by 列 desc - having 用法
having 子句允許指定條件來過濾將出現(xiàn)在最終結(jié)果中的分組結(jié)果。與group by 混合使用砰粹。
select * group by 列 having xxxxx
如:select * group by name having count(name)<2 - 函數(shù)用法
count(列) 數(shù)據(jù)庫列的行數(shù)
max(列) 某列最大值
min(列) 某列最大值
avg(列) 平均值
sum(列) 某列總和
abs() 取絕對(duì)值
upper() 轉(zhuǎn)成大寫
lower() 轉(zhuǎn)小寫
length() 返回字符串長度
如:獲取表的行數(shù)
select count(*) from 表名
7.修改
update 表 set 列 = xx ... where 條件
- 條件見查詢
8.刪除
8.1.按條件刪除表中的數(shù)據(jù)
delete form 表 where 條件
- 條件見查詢
8.2.刪除表中所有數(shù)據(jù)唧躲,保留列信息
truncate table 表
但這種方法無法將遞增數(shù)歸零。如果要將遞增數(shù)歸零,可以使用以下方法:
delete from sqlite_sequence where name = '表名'
8.3.刪除表包括列信息
drop table 表
8.4.刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名
9其他
9.1約束
not null 非空
default 設(shè)置默認(rèn)值
unique 防止記錄兩個(gè)相同的值
primary key 主鍵弄痹,約束唯一標(biāo)識(shí)數(shù)據(jù)庫表中的每個(gè)記錄饭入。在一個(gè)表中可以有多個(gè) UNIQUE 列,但只能有一個(gè)主鍵
check 檢查值
如:
create table 表 (ID integer primary key not null , age integer check(age>=0),idcode integer unique not null)
9.2.Join
SQL 定義了三種主要類型的連接:
- 交叉連接 - CROSS JOIN
- 內(nèi)連接 - INNER JOIN
- 外連接 - OUTER JOIN
1)交叉連接:把第一個(gè)表的每一行與第二個(gè)表的每一行進(jìn)行匹配肛真。如果兩個(gè)輸入表分別有 x 和 y 行谐丢,則結(jié)果表有 x*y 行
select ... from 表1 cross join 表2
2)內(nèi)連接:內(nèi)連接根據(jù)連接謂詞結(jié)合兩個(gè)表(table1 和 table2)的列值來創(chuàng)建一個(gè)新的結(jié)果表。查詢會(huì)把 table1 中的每一行與 table2 中的每一行進(jìn)行比較蚓让,找到所有滿足連接謂詞的行的匹配對(duì)乾忱。當(dāng)滿足連接謂詞時(shí),A 和 B 行的每個(gè)匹配對(duì)的列值會(huì)合并成一個(gè)結(jié)果行历极。INNER 關(guān)鍵字是可選的窄瘟。
select ... from table1 join table2 on 條件
3)外連接
外連接是內(nèi)連接的擴(kuò)展。SQLite 只支持 左外連接(LEFT OUTER JOIN)趟卸,左外連接在內(nèi)連接的基礎(chǔ)上會(huì)將table1中任何未連接的行合并進(jìn)來蹄葱,外連接的列使用 NULL 值,將它們附加到結(jié)果表中衰腌。
select ... from table1 left outer join on 條件
9.3alter
在 SQLite 中新蟆,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作右蕊。
1)表重命名
alter table 表名 rename to 表名
2)新增列
alter table 表名 add column 列名 類型 描述
9.4unions
1)SQLite的 unions 子句/運(yùn)算符用于合并兩個(gè)或多個(gè) selete 語句的結(jié)果琼稻,不返回任何重復(fù)的行。為了使用 unions饶囚,每個(gè) selete 被選擇的列數(shù)必須是相同的帕翻,相同數(shù)目的列表達(dá)式,相同的數(shù)據(jù)類型萝风,并確保它們有相同的順序嘀掸,但它們不必具有相同的長度。
select 列 from 表 union select 列 from 表
2)union all 運(yùn)算符用于結(jié)合兩個(gè) selete 語句的結(jié)果规惰,包括重復(fù)行睬塌。
select 列 from 表 union all select 列 from 表
9.5子查詢
字查詢的結(jié)果可以作為另一個(gè)語句的輸入
以下是子查詢必須遵循的幾個(gè)規(guī)則:
1)子查詢必須用括號(hào)括起來。
2)子查詢?cè)?SELECT 子句中只能有一個(gè)列歇万,除非在主查詢中有多列揩晴,與子查詢的所選列進(jìn)行比較。
3)ORDER BY 不能用在子查詢中贪磺,雖然主查詢可以使用 ORDER BY硫兰。可以在子查詢中使用 GROUP BY寒锚,功能與 ORDER BY 相同劫映。
4)子查詢返回多于一行违孝,只能與多值運(yùn)算符一起使用,如 IN 運(yùn)算符泳赋。
BETWEEN 運(yùn)算符不能與子查詢一起使用雌桑,但是,BETWEEN 可在子查詢內(nèi)使用摹蘑。
如:
select 列 from 表 where id in (select id from 表 條件)
9.6索引
索引有助于加快 SELECT 查詢和 WHERE 子句筹燕,但它會(huì)減慢使用 UPDATE 和 INSERT 語句時(shí)的數(shù)據(jù)輸入轧飞。索引可以創(chuàng)建或刪除衅鹿,但不會(huì)影響數(shù)據(jù)。
1)添加單列索引
create unique index 索引名 on 表名(列名)
2)添加組合索引
create index 索引名 on 表名(列名,列名...)
3)隱私索引
隱式索引是在創(chuàng)建對(duì)象時(shí)过咬,由數(shù)據(jù)庫服務(wù)器自動(dòng)創(chuàng)建的索引大渤。索引自動(dòng)創(chuàng)建為主鍵約束和唯一約束。
4)刪除索引
drop index 索引名
9.7觸發(fā)器
1.SQLite 的觸發(fā)器(Trigger)可以指定在特定的數(shù)據(jù)庫表發(fā)生 DELETE掸绞、INSERT 或 UPDATE 時(shí)觸發(fā)泵三,或在一個(gè)或多個(gè)指定表的列發(fā)生更新時(shí)觸發(fā)。
2.如果提供 WHEN 子句衔掸,則只針對(duì) WHEN 子句為真的指定行執(zhí)行 SQL 語句烫幕。如果沒有提供 WHEN 子句,則針對(duì)所有行執(zhí)行 SQL 語句敞映。
3.BEFORE 或 AFTER 關(guān)鍵字決定何時(shí)執(zhí)行觸發(fā)器動(dòng)作
- 創(chuàng)建觸發(fā)器
1)語句執(zhí)行前觸發(fā)
creat trigger 觸發(fā)器名 before update of 表名
1)語句執(zhí)行后觸發(fā)觸發(fā)
creat trigger 觸發(fā)器名 after update of 表名
9.8事務(wù)
事務(wù)(Transaction)是指一個(gè)或多個(gè)更改數(shù)據(jù)庫的擴(kuò)展较曼。例如,如果您正在創(chuàng)建一個(gè)記錄或者更新一個(gè)記錄或者從表中刪除一個(gè)記錄振愿,那么您正在該表上執(zhí)行事務(wù)捷犹。重要的是要控制事務(wù)以確保數(shù)據(jù)的完整性和處理數(shù)據(jù)庫錯(cuò)誤。
- 開始事務(wù)
begin transaction - commit
end transaction - rollback
rollback
9.9日期
- 日期 (以 YYYY-MM-DD 格式返回日期)
date(timestring,modifier...)
2)時(shí)間 (以 HH:MM:SS 格式返回時(shí)間冕末。)
time(timestring, modifier, modifier, ...)
3)日期時(shí)間 (以 YYYY-MM-DD HH:MM:SS 格式返回萍歉。)
datetime(timestring, modifier, ...)
4)指定格式時(shí)間
strftime(format, timestring, modifier, ...)
timestring說明
1 YYYY-MM-DD
2 YYYY-MM-DD HH:MM
3 YYYY-MM-DD HH:MM:SS.SSS
4 MM-DD-YYYY HH:MM
5 HH:MM
6 YYYY-MM-DDTHH:MM
7 HH:MM:SS
8 YYYYMMDD HHMMSS
9 now
如 2019-01-01
modifier說明
1 NNN days
2 NNN hours
3 NNN minutes
4 NNN.NNNN seconds
5 NNN months
6 NNN years
7 start of month
8 start of year
9 start of day
10 weekday N
11 unixepoch
12 localtime
13 utc
如 -1 days 標(biāo)識(shí)一天前
format說明
1 %d 一月中的第幾天,01-31
2 %f 帶小數(shù)部分的秒档桃,SS.SSS
3 %H 小時(shí)枪孩,00-23
4 %j 一年中的第幾天,001-366
5 %J 儒略日數(shù)藻肄,DDDD.DDDD
6 %m 月蔑舞,00-12
7 %M 分,00-59
8 %s 從 1970-01-01 算起的秒數(shù)
9 %S 秒仅炊,00-59
10 %w 一周中的第幾天斗幼,0-6 (0 is Sunday)
11 %W 一年中的第幾周,01-53
12 %Y 年抚垄,YYYY
13 %% % symbol
如 %Y%m%d 20190101