sqllite文档格式.docx
- 文档编号:4165526
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:13
- 大小:176.66KB
sqllite文档格式.docx
《sqllite文档格式.docx》由会员分享,可在线阅读,更多相关《sqllite文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
Kim'
22,'
South-Hall'
45000);
VALUES(7,'
James'
24,NULL,10000);
VALUES(8,'
Xiaoteng'
29,NULL,NULL);
1,分组统计排序
GROUPBY
进行分组统计数据,命令如下:
sqlite>
SELECTNAME,SUM(SALARY)SALARY_SUM,COUNT
(1)COUNT_NUMFROMCOMPANYGROUPBYNAME;
ORDERBY
进行排序,命令如下:
SELECTNAME,SUM(SALARY)SALARY_SUM,COUNT
(1)COUNT_NUMFROMCOMPANYGROUPBYNAMEORDERBYSALARY_SUMASC;
HAVING
字句过滤数据记录,命令如下:
SELECTc.*,COUNT
(1)COUNT_NUMFROMCOMPANYcGROUPBYc.NAMEHAVING(COUNT_NUM)>
1ORDERBYCOUNT_NUM;
PS:
在一个查询中,HAVING
子句必须放在
子句之后,必须放在
子句之前。
下面是包含
子句的
SELECT
语句的语法:
2,Limit分页统计语句
SQLite
的
LIMIT
子句用于限制由
语句返回的数据数量。
第一页取值SQL:
SELECT*FROMCOMPANYORDERBYIDLIMIT0,3;
也可以从一个特定的偏移开始提取记录,从第四位开始提取
3
个记录,使用OFFSET关键字,SELECT*FROMCOMPANYORDERBYIDLIMIT3OFFSET0;
首页从0开始取值。
第二页取值SQL:
SELECT*FROMCOMPANYORDERBYIDLIMIT3,3;
个记录,使用OFFSET关键字,SELECT*FROMCOMPANYORDERBYIDLIMIT3OFFSET3;
如下图所示:
3,Glob匹配字句
GLOB
运算符是用来匹配通配符指定模式的文本值。
如果搜索表达式与模式表达式匹配,GLOB
运算符将返回真(true),也就是
1。
与
LIKE
运算符不同的是,GLOB
是大小写敏感的,对于下面的通配符,它遵循
UNIX
的语法。
星号(*)
问号(?
)
星号(*)代表零个、一个或多个数字或字符。
问号(?
)代表一个单一的数字或字符。
这些符号可以被组合使用。
下面一些实例演示了带有
'
*'
和
?
运算符的
子句不同的地方:
下面是一个实例,它显示
COMPANY
表中
AGE
以
2
开头的所有记录,如下所示:
ADDRESS
文本里包含一个连字符(-)的所有记录:
4,Distinct关键字过滤重复记录
SQLite的
DISTINCT
关键字与SELECT语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
有可能出现一种情况,在一个表中有多个重复的记录。
当提取这样的记录时,DISTINCT关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
5,字符串连接操作
问题地址:
CREATETABLEt1(idint,namevarchar(60));
INSERTINTO"
t1"
1@'
);
select*fromt1;
id
name
----------
----------
4
1@
updatet1setname=(id/2)||substr(name,instr(name,'
@'
),length(name)-instr(name,'
)+1)
whereid=4;
2@
6,对Null值的处理
往表里面录入Null值
INSERTINTOCOMPANY(ID,NAME,AGE,ADDRESS,SALARY)VALUES(8,'
29,NULL,18000);
修改某个字段为null值
UPDATECOMPANYSETSALARY=NULLWHEREID=8;
查询为null的记录
SELECT*FROMCOMPANYWHEREADDRESSISNULL;
ID
NAME
AGE
ADDRESS
SALARY
----------
7
James
24
10000
8
Xiaoteng
29
查询不为null的记录
SELECT*FROMCOMPANYWHEREADDRESSISNOTNULL;
1
Paul
32
California
20000
Allen
25
Texas
15000
Teddy
23
Norway
Mark
Rich-Mond
65000
5
David
27
85000
6
Kim
22
South-Hall
45000
7,子查询
SELECt中的基本语法如下:
SELECTcolumn_name[,column_name]
FROM
table1[,table2]
WHERE
column_nameOPERATOR
(SELECTcolumn_name[,column_name]
FROMtable1[,table2]
[WHERE])
实例如下:
SELECT*FROMCOMPANYWHEREIDIN(SELECTIDFROMCOMPANYWHERESALARY>
45000);
INSERT语句中的子查询使用,基本语法:
INSERTINTOtable_name[(column1[,column2])]
SELECT[*|column1[,column2]
[WHEREVALUEOPERATOR]
INSERTINTOCOMPANY_BKP
SELECT*FROMCOMPANY
WHEREIDIN(SELECTID
FROMCOMPANY);
UPDATE语句中的子查询使用,基本语法如下:
UPDATEtable
SETcolumn_name=new_value
[WHEREOPERATOR[VALUE]
(SELECTCOLUMN_NAME
FROMTABLE_NAME)
[WHERE)]
UPDATECOMPANY
SETSALARY=SALARY*0.50
WHEREAGEIN(SELECTAGEFROMCOMPANY_BKP
WHEREAGE>
=27);
DELETE语句中的子查询使用,语法如下:
DELETEFROMTABLE_NAME
DELETEFROMCOMPANY
WHEREAGE>
27);
8,EXPLAIN分析
没有建立索引之前,分析都是表扫描:
EXPLAINSELECT*
FROMCOMPANY
WHERESalary<
20000;
addr
opcode
p1
p2
p3
p4
p5
comment
0
Trace
0
00
Integer
1
Goto
16
00
OpenRead
2
5
Rewind
14
Column
4
Ge
13
collseq(BI
6b
Column
9
6
10
3
7
11
8
12
ResultRow
13
Next
01
14
Close
15
Halt
16
Transactio
17
VerifyCook
18
TableLock
COMPANY
19
EXPLAINQUERYPLANSELECT*FROMCOMPANYWHERESalary<
order
from
detail
-------------
TABLECOMPANY
建立索引,再进行EXPLAIN分析查看结果,走了idx_sal索引扫描:
CREATEINDEXidx_salONCOMPANY(SALARY);
keyinfo(1,
Affinity
cb
SCopy
IsNull
IdxGE
21
IdxRowid
Seek
20
21
10
22
23
24
25
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sqllite