sqlite3常用命令及语法.docx
- 文档编号:18464597
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:34
- 大小:21.96KB
sqlite3常用命令及语法.docx
《sqlite3常用命令及语法.docx》由会员分享,可在线阅读,更多相关《sqlite3常用命令及语法.docx(34页珍藏版)》请在冰点文库上搜索。
sqlite3常用命令及语法
sqlite数据库只用一个文件就ok,小巧方便,所以是一个特别不错的嵌入式数据库,SQLite大量的被用于,PDA,MP3播放器以及机顶盒设备。
MozillaFirefox使用SQLite作为数据库。
Mac计算机中的包含了多份SQLite的拷贝,用于不相同的应用。
PHP将SQLite作为内置的数据库。
Skype客户端软件在内部使用SQLite。
SymbianOS(智能操作平台的领航)内置SQLite。
AOL邮件客户端绑定了SQLite。
Solaris10在启动过程中需要使用SQLite。
McAfee杀毒软件使用SQLite。
iPhones使用SQLite。
Symbian和Apple以外的很多生产厂商使用SQLite。
下面就sqlite中的常用命令和语法介绍
可下载不相同操作系统的相关版本sqlitegedit
也能够使用火狐中的插件sqlitemanager
新建数据库
sqlite3databasefilename
检查databasefilename可否存在,若是不存在就创立并进入数据库〔若是直
接退出,数据库文件不会创立〕若是已经存在直接进入数据库对数据库进行操作
sqlite中命令:
1/22
以.开头,大小写敏感〔数据库对象名称是大小写不敏感的〕
.exit
.help查察帮助针对命令
.database显示数据库信息;包含当前数据库的地址
.tables也许.table显示表名称没有表那么不显示
.schema命令能够查察创立数据对象时的SQL命令;
.schemadatabaseobjectname查察创立该数据库对象时的SQL的命令;若是没有这个数据库对象就不显示内容,不会有错误提示
.readFILENAME执行指定文件中的SQL语句
.headerson/off显示表头默认off
.modelist|column|insert|line|tabs|tcl|csv改变输出格式,详尽以下
sqlite>.modelist
sqlite>select*fromemp;
7369|SMITH|CLERK|7902|17-12-1980|800||207499|ALLEN|SALESMAN|7698|20-02-1981|1600|300|30
若是字段值为NULL默认不显示也就是显示空字符串
sqlite>.modecolumn
sqlite>select*fromemp;
7369
SMITH
CLERK
7902
17-12-1980800
20
7499ALLENSALESMAN769820-02-19811600
30030
2/22
7521
WARD
SALESMAN7698
22-02-1981
1250
500
30
sqlite>.modeinsert
sqlite>select*fromdept;
INSERTINTOtableVALUES(10,'ACCOUNTING','NEWYORK');INSERTINTOtableVALUES(20,'RESEARCH','DALLAS');INSERTINTOtableVALUES(30,'SALES','CHICAGO');INSERTINTOtableVALUES(40,'OPERATIONS','BOSTON');
sqlite>.modeline
sqlite>select*fromdept;
DEPTNO=10
DNAME=ACCOUNTING
LOC=NEWYORK
DEPTNO=20
DNAME=RESEARCH
LOC=DALLAS
DEPTNO=30
DNAME=SALES
LOC=CHICAGO
DEPTNO=40
DNAME=OPERATIONS
LOC=BOSTON
3/22
sqlite>.modetabs
sqlite>select*fromdept;
10ACCOUNTINGNEWYORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTONsqlite>.modetcl
sqlite>select*fromdept;
"10""ACCOUNTING""NEWYORK"
"20""RESEARCH""DALLAS"
"30""SALES""CHICAGO"
"40""OPERATIONS""BOSTON"
sqlite>.modecsv
sqlite>select*fromdept;
10,ACCOUNTING,"NEWYORK"
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
.separator"X"更正分界符号为X
sqlite>.separator'**'
sqlite>select*fromdept;
4/22
10**ACCOUNTING**"NEWYORK"
20**RESEARCH**DALLAS
30**SALES**CHICAGO
40**OPERATIONS**BOSTON
.dump?
TABLE?
生成形成数据库表的SQL脚本
.dump生成整个数据库的脚本在终端显示
.outputstdout将输出打印到屏幕默认
.outputfilename将输出打印到文件〔.dump.output结合可将数据库以sql语句的形式导出到文件中〕
.nullvalueSTRING盘问时用指定的串代替输出的NULL串默认
为.nullvalue''
字段种类:
数据库中储藏的每个值都有一个种类,都属于下面所列种类中的一种,(被数据库引擎所控制)
NULL:
这个值为空值
INTEGER:
值被表记为整数,依据值的大小能够依次被储藏为1,2,3,4,5,6,7,8个
字节
REAL:
所有值都是浮动的数值,被储藏为8字节的IEEE浮动标记序号.
TEXT:
文本.值为文本字符串,使用数据库编码储藏(TUTF-8,UTF-16BEorUTF-16-LE).
BLOB:
值是BLOB数据,如何输入就如何储藏,不改变格式.
值被定义为什么种类只和值自己相关,和列没相关系,和变量也没相关系.所以sqlite被称作弱种类数据库
5/22
数据库引擎将在执行时检查、剖析种类,并进行数字储藏种类(整数和实数)和文本种类之间的变换.
SQL语句中局部的带双引号或单引号的文字被定义为文本,
若是文字没带引号并没有小数点或指数那么被定义为整数,
若是文字没带引号但有小数点或指数那么被定义为实数,
若是值是空那么被定义为空值.
BLOB数据使用符号X'ABCD'来表记.
但实质上,sqlite3也接受以下的数据种类:
smallint16位的整数。
interger32位的整数。
decimal(p,s)精确值p是指所有有几个十进制数,s是指小数点后能够有几位小数。
若是没有特别指定,那么系统会默认为p=5s=0。
float32位元的实数。
double64位元的实数。
char(n)n长度的字串,n不能够高出
254。
varchar(n)长度不固定且其最大长度为n的字串,n不能够高出
4000。
graphic(n)和char(n)相同,但是其单位是两个字节,n不能够超
127。
这个形态是为了支持两个字节长度的字体,如中文字。
vargraphic(n)可变长度且其最大长度为n的双字元字串,n不能够高出2000
6/22
date包含了年份、月份、日期。
time包含了小时、分钟、秒。
timestamp包含了年、月、日、时、分、秒、千分之一秒。
SQLite包含了以下时间/日期函数:
datetime()产寿辰期和时间无参数表示获得当前时间和日期
sqlite>selectdatetime();
2021-01-0712:
01:
32
有字符串参数那么把字符串变换成日期
sqlite>selectdatetime('2021-01-0712:
01:
30');2021-01-0712:
01:
30
selectdate('2021-01-08','+1day','+1year');
2021-01-09
selectdatetime('2021-01-0800:
20:
00','+1hour','-12minute');2021-01-0801:
08:
00
selectdatetime('now','startofyear');
2021-01-0100:
00:
00
selectdatetime('now','startofmonth');
2021-01-0100:
00:
00
selectdatetime('now','startofday');
2021-01-0800:
00:
00
selectdatetime('now','startofweek');错误
7/22
selectdatetime('now','localtime');
结果:
2006-10-1721:
21:
47
date()产寿辰期
sqlite>selectdate('2021-01-0712:
01:
30');
2021-01-07
同理有参和无参
selectdate('now','startofyear');
2021-01-01
selectdate('2021-01-08','+1month');
2021-02-08
time()产生时间
selecttime();
03:
14:
30
selecttime('23:
18:
59');
23:
18:
59
selecttime('23:
18:
59','startofday');
00:
00:
00
selecttime('23:
18:
59','endofday');错误
在时间/日期函数里能够使用以下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DDHH:
MM
8/22
YYYY-MM-DDHH:
MM:
SS
HH:
MM
HH:
MM:
SS
now
其中now是生在的。
日期不能够正确比大小,会按字符串比,日期默格式dd-mm-yyyy
selecthiredatefromemporderbyhiredate;
17-11-1981
17-12-1980
19-04-1987
20-02-1981
22-02-1981
strftime()以上三个函数生的日期和行格式化
strftime()函数能够把YYYY-MM-DDHH:
MM:
SS格式的日期字符串成其他形式的字符串。
strftime(格式,日期/,修正符,修正符,⋯)select
strftime('%d',datetime());
它能够用以下的符号日期和行格式化:
%d在月中的第几天,01-31
%f小数形式的秒,
%H小,00-23
9/22
%j算出某一天是该年的第几天,001-366
%m月份,00-12
%M分钟,00-59
%s从____年1月1日到现在的秒数
%S秒,00-59
%w星期,0-6(0是星期天)
%W算出某一天属于该年的第几周,01-53
%Y年,YYYY
%%百分号
selectstrftime('%Y.%m.%d%H:
%M:
%S','now');
selectstrftime('%Y.%m.%d%H:
%M:
%S','now','localtime');
结果:
2006.10.1721:
41:
09
selecthiredatefromemp
orderbystrftime('%Y.%m.%d%H:
%M:
%S',hiredate);正确
selectstrftime('%Y.%m.%d%H:
%M:
%S',hiredate)fromemp
orderbystrftime('%Y.%m.%d%H:
%M:
%S',hiredate);错误
算术函数
abs(X)返回给定数字表达式的绝对值。
max(X,Y[,...])返回表达式的最大值。
组函数max(列名)
sqlite>selectmax(2,3,4,5,6,7,12);
12
10/22
select(abs(strftime('%s','now'))-abs(strftime('%s','1986-03-21
04:
04:
04')))/24/60/60;
min(X,Y[,...])返回表达式的最小值。
random()返回随机数。
sqlite>selectrandom();
round(X[,Y])返回数字表达式并四舍五入为指定的长度或精度。
selectround((abs(strftime('%s','now'))-abs(strftime('%s','1986-03-21
04:
04:
04')))/24/60/60,0);
selectround(3.2345,0);
字符办理函数
length(X)返回给定字符串表达式的字符个数。
lower(X)将大写字符数据变换为小写字符数据后返回字符表达式。
upper(X)返回将小写字符数据变换为大写的字符表达式。
substr(X,Y,Z)返回表达式的一局部。
从Y开始读Z个字符Y最小值1
sqlite>selectsubstr('abcdef',3,3);
cde
selectlength('aaaa'),lower('AAADDDdd'),upper('sdfdsfSD');
4|aaaddddd|SDFDSFSD
23-01-1982
substr(hiredate,7,4)
11/22
substr(hiredate,4,2)
substr(hiredate,1,2)
||字符串拼接
selectempno,ename,
substr(hiredate,7,4)||'-'||substr(hiredate,4,2)||'-'||substr(hiredate,1,2)ashiredatefromemporderbysubstr(hiredate,7,4)asc,substr(hiredate,4,2)asc,substr(hiredate,1,2)asc;
selectstrftime('%Y-%m-%d'〕
quote(A)给字符串加引号
sqlite>selectquote('aaa');
'aaa'
条件判断函数
ifnull(X,Y)若是X为null返回Y
0
300
500
0
1400
会集函数组函数
avg(X)返回组中值的平均值。
count(X)返回组中工程的数量。
max(X)返回组中值的最大值。
12/22
min(X)返回组中值的最小值。
sum(X)返回表达式中所有值的和。
selectavg(sal),max(sal),min(sal),count(sal),sum(sal)fromemp;selectavg(sal),max(sal),min(sal),count(sal),sum(sal),deptnofromemp
groupbydeptno;
selectdeptno,avg(sal)
fromemp//1
wheresal>1000//2
groupbydeptno//3
havingdeptno>10//4
orderbydeptnodesc;
selectgender
sum
fromstudent
whereage>20
groupbygender
havinggender='男'
FROMEMP;
selectcount(*)AS'count'fromempASe;
13/22
from(selectdeptno,avg(sal)AAA,max(sal),min(sal),count(*)
fromemp
groupbydeptno
havingdeptno<>30
orderbydeptnoasc)EE;
SELECTSAL
FROMEMP
WHERESAL>
(SELECTAVG(SAL)FROMEMP)
SELECT*FROMEMPE
WHERESAL>
(SELECTAVG(SAL)FROMEMPWHEREEMP.DEPTNO=E.DEPTNO)
SELECT*FROMEMPE
WHERESAL>(
);//关系子盘问
selectstrftime('%s','now')-strftime('%s','1986-03-0204:
04:
04');
SELECT*FROMEMPE
WHEREdeptnoin(
SELECTdeptnofromempwheresal>3000
);
14/22
select
fromemp,dept,salgrade
and
emp.sal>=salgrade.losalandemp.sal<=salgrade.hisal;selecte.empno,e.ename,e.sal,e.deptno,d.dname,g.gradefromempe,deptd,salgradeg
wheree.deptno=d.deptnoande.salbetweeng.losalandg.hisalande.empno=7399;
其他函数
typeof(X)返回数据的种类。
sqlite>selecttypeof(111);
integer
sqlite>selecttypeof('233');
text
sqlite>selecttypeof('2021-12-12');
text
sqlite>selecttypeof('223.44');
text
sqlite>selecttypeof(223.44);
real
15/22
last_insert_rowid()返回最后插入的数据的ID。
sqlite_version()返回SQLite的版本。
sqlite>selectsqlite_version();
change_count()返回受上一语句影响的行数。
last_statement_change_count()
createtableemp_bakselect*fromEMP;不能够在sqlite中使用
插入记录
insertintotable_namevalues(field1,field2,field3...);
盘问
select*fromtable_name;查察table_name表中所有记录;
select*fromtable_namewherefield1='xxxxx';盘问吻合指定条件的记录;
select.....
fromtable_name[,table_name2,...]
where.....
groupby....
having....
orderby...
select.....
fromtable_nameinnerjoin|leftouterjoin|rightouterjointable_name2
on...
16/22
where.....
groupby....
having....
orderby...
子盘问:
select*
fromEMPm
whereSAL>
(selectavg(SAL)fromEMPwhereDEPTNO=m.DEPTNO);
支
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sqlite3 常用命令 语法