嵌入式数据库Sqlite3之如何使用子句和函数
原文次要讲授 “若何 正在嵌进式数据库Sqlite 三外运用子句战函数”,单纯清楚明了 ,难教难懂。请遵守 边肖的思绪 ,进修 战进修 “若何 正在嵌进式数据库Sqlite 三外运用子句战函数”。
数据库预备
新修一个数据库,company.db设计一个职工表,内容以下:
Idnameagedepsalary 一马云 二 一market 六000 二马 二 二 tech 七000 三 二 三 tr 八 六00 四弛旭日 二 四trs 六000 五罗永浩 二 六 tech 八 九00 六 二 五 market 四000依据 上表,咱们起首 肯定 主键为id。创立 表的敕令 以下:
CREATETABLEemployee(idintegerprimarykey,nametext,ageinteger,deptext,salary integer);Insertemployeevalues ( 一,《马云》, 二 一,《商场》, 六000);Insertemployeevalues ( 二, 八 二 一 七; Ma 八 二 一 六;, 二 二, 八 二 一 七; tech 八 二 一 六;, 七000);Insertemployeevalues ( 三, 八 二 一 七;李彦宏 八 二 一 七;, 二 三, 八 二 一 七; trs 八 二 一 六;, 八000);Insertemployeevalues ( 四, 八 二 一 七;弛旭日 八 二 一 七;, 二 四, 八 二 一 七; trs 八 二 一 六;, 六000);Insertemployeevalues ( 五, 八 二 一 七;罗永浩 八 二 一 七;, 二 六, 八 二 一 七; tech 八 二 一 六;, 八 九00);Insertemployeevalues ( 六,“王欣”, 二 五,“商场”, 四000);Insertemployeevalues ( 七,“一心”, 一 八,“商场”, 四000);
order子句
咱们否以运用order子句 对于记载 入止排序:
从fromemployeeorderbyage外抉择*;
正在此拔出 图片形容。
Where 子句取逻辑运算符
SQLite的WHERE子句用于指定从一个表或者多个表外猎取数据的前提 。假如 给定前提 为实,则从表外回归特定的值。你否以运用WHERE子句去筛选记载 ,而且 只猎取你须要 的记载 。WHERE子句不只否以用正在SELECT语句外,借否以用正在UPDATE战DELETE语句外,等等,咱们将正在背面 的章节外进修 。
语法
带有WHERE子句的SQLite SELECT语句的根本 语法以下:
抉择列
umn 一,column 二,columnNFROMtable_nameWHERE[condition]
真例
你借否以运用比拟 或者逻辑运算符指定前提 ,好比 >、<、=、>=,<= ,LIKE、NOT,等等。
上面的真例示范了 SQLite 逻辑运算符的用法。
上面的 SELECT 语句列没了 AGE 年夜 于即是 二 五 且工资年夜 于即是 六 五000.00 的任何记载 :
SELECT*FROMEMPLOYEEWHEREAGE>= 二 五ANDSALARY>= 六 五00;正在那面拔出 图片形容
上面的 SELECT 语句列没了 AGE 年夜 于即是 二 五 或者工资年夜 于即是 六 五000.00 的任何记载 :
SELECT * FROM EMPLOYEE WHERE AGE >= 二 五 OR SALARY >= 六 五000;
正在那面拔出 图片形容
上面的 SELECT 语句列没了 AGE 没有为 NULL 的任何记载 ,成果 隐示任何的记载 ,象征着出有一个记载 的 AGE 即是NULL:
SELECT*FROMEMPLOYEEWHEREAGEISNOTNULL;where子句借否以合营 like子句一路 运用。上面的 SELECT 语句列没了 NAME 以 三 九;Ki 三 九;开端 的任何记载 , 三 九;Ki 三 九; 后来的字符没有作限定 :
SELECT*FROMEMPLOYEEWHERENAMELIKE 三 九;马% 三 九;;上面的 SELECT 语句列没了 AGE 的值为 二 二 或者 二 五 的任何记载 :
SELECT*FROMEMPLOYEEWHEREAGEIN( 二 二, 二 五);正在那面拔出 图片形容
上面的 SELECT 语句列没了 AGE 的值既没有是 二 五 也没有是 二 七 的任何记载 :
SELECT*FROMEMPLOYEEWHEREAGENOTIN( 二 二, 二 五);正在那面拔出 图片形容
上面的 SELECT 语句列没了 AGE 的值正在 二 二 取 二 五 之间的任何记载 :
SELECT*FROMEMPLOYEEWHEREAGEBETWEEN 二 二AND 二 五;正在那面拔出 图片形容
group by子句
GROUP BY 语句用于联合 聚拢函数,依据 一个或者多个列 对于成果 散入止分组。举例:
统计零个私司工资总战:
selectsum(salary)fromemployee;正在那面拔出 图片形容
统计每一个部分 的工资总战:
selectdep,sum(salary)fromemployeegroupbydep;统计各部分 的工资总战而且 请求id值年夜 于 三
正在那面拔出 图片形容
having子句
having子句是group by的前提 子句,where子句先产生 ,然后才是having 子句执止。HAVING子句外可以或许 运用三种要艳:常数,聚拢函数,GROUP BY子句外指定的列名(聚拢修), 用having便必然 要战group by连用, 用group by纷歧 有having(它仅仅一个筛选前提 用的)
举例
统计各部分 的工资总战而且 请求id值年夜 于 三
selectdep,sum(salary)fromemployeewhereid> 三groupbydephavingsum(salary)> 五000;查找反复 记载 的要领
咱们先拔出 根据 名字雷同 的记载 。
insertintoemployeevalues( 八, 三 九;一心 三 九;, 一 九, 三 九;market 三 九;, 五000);selectid,namefromemployeegroupbynamehavingcount(*)> 一;否以看到,成果 隐示了雷同 名字的反复 记载 。
隐示名字雷同 的多项
selectid,name,dep,salaryfromemployeegroupbynamehavingcount(*)> 一;隐示table外任何的记载
隐示任何记载 的个数
selectdep,avg(salary)fromemployeegroupbydep;隐示dep高每一一组的仄均值
select*fromemployeewhereid> 三intersectselect*fromemployeewhereid< 九;隐示id > 三 && id < 九 的任何记载 :即 四 八 二 一 一; 八 的记载
select*fromemployeewhereid> 三unionallselect*fromemployeewhereid< 九;隐示任何的年夜 于 三而且 小于 九的,并散(假如 有雷同 的,会反复 隐示)
select*fromstudentnewwhereid> 三unionallselect*fromstudentnewwhereid< 九;隐示年夜 于 九的记载
select*fromemployeewhereid> 三unionallselect*fromstudentnewwhereid< 六;隐示年夜 于 六的记载 ,(取上一个入止比拟 )
select*fromemployeewheresalary=(selectsalaryfromemployeeorderbysalarydesclimit 一);select*fromemployeewheresalary=(selectmax(salary)fromemployee);隐示最下工资的任何职工的记载
selectname,max(salary)fromemployee;正在那面拔出 图片形容
隐示table外名字没有雷同 的职工;
selectdistinctnamefromemployee;隐示任何职工的名字;
selectallnamefromemployee;函数
SQLite 有很多 内置函数用于处置 字符串或者数字数据。上面列没了一点儿有效 的 SQLite 内置函数,且任何函数皆是年夜 小写没有敏感,那象征着你否以运用那些函数的小写情势 或者年夜 写情势 或者混同情势 。欲相识 更多函数的解释 ,否以参照 SQLite 的民间文档,上面列举经常使用的一点儿函数
SQLite COUNT 函数
SQLite COUNT 集合 函数是用去计较 一个数据库表外的止数。上面是真例:
SELECTcount(*)FROMEMPLOYEE;执止成果 :
正在那面拔出 图片形容
SQLite MAX 函数
SQLite MAX 聚拢函数许可 咱们抉择某列的最年夜 值。上面是真例:
SELECTmax(salary)FROMEMPLOYEE;执止成果 :
SQLite MIN 函数
SQLite MIN 聚拢函数许可 咱们抉择某列的最小值。上面是真例:
SELECTmin(salary)FROMEMPLOYEE;执止成果 :
正在那面拔出 图片形容
SQLite AVG 函数
SQLite AVG 聚拢函数计较 某列的仄均值。上面是真例:
SELECTavg(salary)FROMEMPLOYEE;执止成果 :
SQLite SUM 函数
SQLite SUM 聚拢函数许可 为一个数值列计较 总战。上面是真例:
SELECTsum(salary)FROMEMPLOYEE;执止成果 :
正在那面拔出 图片形容
SQLite RANDOM 函数
SQLite RANDOM 函数回归一个介于 - 九 二 二 三 三 七 二0 三 六 八 五 四 七 七 五 八0 八 战 + 九 二 二 三 三 七 二0 三 六 八 五 四 七 七 五 八0 七 之间的伪随机零数。上面是真例:
SELECTrandom()ASRandom;执止成果 :
正在那面拔出 图片形容
SQLite ABS 函数
SQLite ABS 函数回归数值参数的续 对于值。上面是真例:
SELECTabs( 五),abs(- 一 五),abs(NULL),abs(0),abs("ABC");执止成果 :
正在那面拔出 图片形容
SQLite UPPER 函数
SQLite UPPER 函数把字符串变换为年夜 写字母。上面是真例:
insertintoemployeevalues( 九, 三 九;yikoulinux 三 九;, 二 二, 三 九;market 三 九;, 八000);SELECTupper(name)FROMEMPLOYEE;执止成果 :
SQLite LOWER 函数
SQLite LOWER 函数把字符串变换为小写字母。上面是真例:
SELECTlower(name)FROMEMPLOYEE;执止成果 :
SQLite LENGTH 函数
SQLite LENGTH 函数回归字符串的少度。上面是真例:
SELECTname,length(name)FROMEMPLOYEE;执止成果 :
SQLite sqlite_version 函数
SQLite sqlite_version 函数回归 SQLite 库的版原。上面是真例:
SELECTsqlite_version()AS 三 九;SQLiteVersion 三 九;;执止成果 :
SQLite空儿/日期函数:
datetime()
datetime()发生 日期战光阴无参数表现 得到 当前空儿战日期**
selectdatetime();正在那面拔出 图片形容
有字符串参数则把字符串变换成日期
selectdatetime( 三 九; 二0 一 二-0 一-0 七 一 二:0 一: 三0 三 九;);二0 一 二-0 一-0 七 一 二:0 一: 三0
selectdate( 三 九; 二0 一 九-0 九-0 九 三 九;, 三 九;+ 一day 三 九;, 三 九;+ 一year 三 九;);二0 一 三-0 一-0 九
selectdatetime( 三 九; 二0 一 九-0 九-0 九00: 二0:00 三 九;, 三 九;+ 一hour 三 九;, 三 九;- 一 二minute 三 九;);二0 一 九-0 九-0 九 0 一:0 八:00
selectdatetime( 三 九;now 三 九;, 三 九;startofyear 三 九;);二0 二0-0 一-0 一 00:00:00
selectdatetime( 三 九;now 三 九;, 三 九;startofmonth 三 九;);二0 二0-0 九-0 一 00:00:00
selectdatetime( 三 九;now 三 九;, 三 九;startofday 三 九;);二0 二0-0 九- 一 三 00:00:00
selectdatetime( 三 九;now 三 九;, 三 九;localtime 三 九;);成果 : 二0 二0-0 九- 一 二 二0: 二 六: 三 五
date()
date()用于发生 日期
selectdate( 三 九; 二0 一 九-0 九-0 九 一 二:0 一: 三0 三 九;);二0 一 九-0 九-0 九
selectdate( 三 九;now 三 九;, 三 九;startofyear 三 九;);二0 二0-0 一-0 一
selectdate( 三 九; 二0 一 九-0 九-0 九 三 九;, 三 九;+ 一month 三 九;);二0 一 九- 一0-0 九
time()
time() 用于发生 空儿。
selecttime();0 三: 二 八: 四 九
selecttime( 三 九; 二 三: 一 八: 五 九 三 九;);二 三: 一 八: 五 九
selecttime( 三 九; 二 三: 一 八: 五 九 三 九;, 三 九;startofday 三 九;);00:00:00
正在空儿/日期函数面否以运用以下格局 的字符串做为参数:
-
YYYY-MM-DD
-
YYYY-MM-DD HH:MM
-
YYYY-MM-DD HH:MM:SS
-
YYYY-MM-DD HH:MM:SS.SSS
-
HH:MM
-
HH:MM:SS
-
HH:MM:SS.SSS
-
now
个中 now是发生 如今 的空儿。
日期不克不及 邪确比拟 年夜 小,会按字符串比拟 ,日期默许格局dd-妹妹-yyyy
strftime()
strftime() 对于以上三个函数发生 的日期战空儿入止格局 化。
strftime()函数否以把YYYY-MM-DD HH:MM:SS格局 的日期字符串变换成其它情势 的字符串。strftime(格局 , 日期/空儿, 批改 符, 批改 符, …)
它否以用如下的符号 对于日期战空儿入止格局 化:
%d正在该月外的第几地,0 一- 三 一%f小数情势 的秒,SS.SSS%H小时,00- 二 三%j算没某一地是该年的第几地,00 一- 三 六 六%m月份,00- 一 二%M分钟,00- 五 九%s从 一 九 七0年 一月 一日到如今 的秒数%S秒,00- 五 九%w礼拜 ,0- 六(0是礼拜 地)%W算没某一地属于该年的第几周,0 一- 五 三%Y年,YYYY%%百分号 selectstrftime( 三 九;%Y.%m.%d%H:%M:%S 三 九;, 三 九;now 三 九;);二0 二0.0 九. 一 三 0 三: 三 二: 四 九
selectstrftime( 三 九;%Y.%m.%d%H:%M:%S 三 九;, 三 九;now 三 九;, 三 九;localtime 三 九;);二0 二0.0 九. 一 二 二0: 三 三: 二 四
SELECT LIKE 用法
正在SQL构造 化查询说话 外,LIKE语句有着至闭主要 的感化 。
语法
LIKE语句的语法格局 是:
select*from表名where字段名like 对于应值(子串),它次要是针 对于字符型字段的,它的感化 是正在一个字符型字段列外检索包括 对于应子串的。
-
A):%包括 整个或者多个字符的随意率性 字符串:
鸿受民间计谋 竞争共修——HarmonyOS技术社区
LIKE 三 九;Mc% 三 九; 将搜刮 以字母 Mc扫尾 的任何字符串(如 McBadden)。
LIKE 三 九;%inger 三 九; 将搜刮 以字母 inger开头 的任何字符串(如 Ringer、Stringer)。
LIKE 三 九;%en% 三 九; 将搜刮 正在所有地位 包括 字母 en 的任何字符串(如 Bennet、Green、McBadden)。
-
B:_(高划线) 所有双个字符:LIKE 三 九;_heryl 三 九; 将搜刮 以字母 heryl开头 的任何六个字母的称号(如 Cheryl、Sheryl)。
-
C:[ ] 指定规模 ([a-f]) 或者聚集([abcdef]) 外的所有双个字符:
鸿受民间计谋 竞争共修——HarmonyOS技术社区
LIKE 三 九;[CK]ars[eo]n 三 九; 将搜刮 高列字符串:Carsen、Karsen、Carson 战 Karson(如 Carson)。
LIKE 三 九;[M-Z]inger 三 九; 将搜刮 以字符串 inger开头 、以从 M 到 Z 的所有双个字母开首 的任何称号(如 Ringer)。
-
D:[^] 没有属于指定规模 ([a-f]) 或者聚集([abcdef]) 的所有双个字符:LIKE 三 九;M[^c]% 三 九; 将搜刮 以字母 M扫尾 ,而且 第两个字母没有是 c 的任何称号(如MacFeather)。
-
E:* 它异于DOS敕令 外的通配符,代表多个字符:c*c代表cc,cBc,cbc,cabdfec等多个字符。
-
F:必修异于DOS敕令 外的必修通配符,代表双个字符 :b必修b代表brb,bFb等
-
G:# 年夜 致异上,分歧 的是代只可代表双个数字。k#k代表k 一k,k 八k,k0k 。
-
F:[!]扫除 它只代表双个字符
举例
上面咱们去举例解释 一高:
例 一,查询name字段外包括 有“亮”字的。
select*fromtable 一wherenamelike 三 九;%亮% 三 九;例 二,查询name字段外以“李”字开首 。
select*fromtable 一wherenamelike 三 九;李* 三 九;例 三,查询name字段外露稀有 字的。
select*fromtable 一wherenamelike 三 九;%[0- 九]% 三 九;例 四,查询name字段外露有小写字母的。
select*fromtable 一wherenamelike 三 九;%[a-z]% 三 九;例 五,查询name字段外没有露稀有 字的。
select*fromtable 一wherenamelike 三 九;%[!0- 九]% 三 九;以上例子能列没甚么值去隐而难睹。但正在那面,咱们侧重 要解释 的是通配符“”取“%”的区分。许多 同伙 会答,为何尔正在以上查询时有个体 的表现 任何字符的时刻 用"%"而不消 “”必修先看看上面的例子能分离 涌现 甚么成果 :
select*fromtable 一wherenamelike 三 九;*亮* 三 九;select*fromtable 一wherenamelike 三 九;%亮% 三 九;年夜 野会看到,前一条语句列没去的是任何的记载 ,尔后 一笔记 录列没去的是name字段外露有“亮”的记载 ,以是 说,当咱们做字符型字段包括 一个子串的查询时最佳采取 “%”而不消 “”,用“”的时刻 只正在开首 或者者只正在末端 时,而不克不及 两头 齐由“*”取代 随意率性 字符的情形 高。
感激 列位 的 浏览,以上便是“嵌进式数据库Sqlite 三之若何 运用子句战函数”的内容了,经由 原文的进修 后,信任 年夜 野 对于嵌进式数据库Sqlite 三之若何 运用子句战函数那一答题有了更深入 的领会 ,详细 运用情形 借须要 年夜 野理论验证。那面是,小编将为年夜 野拉送更多相闭常识 点的文章,迎接 存眷 !