sqlite学习笔记

最近在学习sqlite,sqlite官网上面的文档无疑是最权威的,但对于新手来说上手有些困难,而是比较适合已经入门的初级使用者查阅。搜索之后发现下面这两个网站,还不错,我主要是跟着第一个学习的:

简介

获取帮助 :.help
显示当前设置:.show 比如显示table时是否打印表头,各列之间以什么字符分隔,默认‘|’

数据库和列表打开与查看

打开一个数据库:.open <database_name> 通过这种方法打开的数据库,默认的名字是main,如果需要同时打开多个数据库,可以为每个数据库取一个别名,ATTACH DATABASE '/home/manager/Documents/sqlite3/ath.db' as 'ath';
注意,maintemp是保留名,在每个数据库连接中都有,用于作为primary database,存放临时列表和其他数据对象。

显示当前已打开的全部数据库使用.database,同样地,如果需要查看当前session全部的table,可使用.table(s)。如果有多个数据库,注意看到拥有alias name的数据库中的列表,会以databasename.tablename的格式显示,但是在引用他们的名字时,使用全名(databasename.tablename)和列表名均可。

查看一个表共有哪些列,.schema OrganismsPRAGMA table_info(Organisms);
注意,sqlite中commands全部是小写字母组成,且以点号’.’开头,而statements是大写字母组成,以分号结尾’;’ 你可能已经看出来了,sqlite是区分大小写的,这点和MySQL不同(关于sqlite、MySQL和NoSQL三者的比较,这里的一篇文章很值得一看)。注释分为两种,--为行内注释,有限范围从字符往后到行尾,/*是C语言风格的注释,为块注释,位于/**/之间的内容会被sqlite引擎略过。

常用的操作:简单统计、查询

类似于linux的head,有的时候需要从列表中选出几条记录看一下,可以这样SELECT * FROM Organisms LIMIT 3; 返回如下:

1
2
3
4
5
abbr        name
---------- -----------------
aaa Acidovorax avenae
aac Alicyclobacillus
aad Alicyclobacillus

此外,还有其他常见操作

1
2
3
4
5
6
7
8
9
SELECT COUNT(abbr) FROM Organisms; --统计表中全部记录的数目
SELECT COUNT(abbr) FROM Organisms WHERE abbr LIKE 'a__'; --统计abbr以「a」开头,共3个字符长的记录数
COUNT(abbr)
-----------
232
SELECT COUNT(abbr) FROM Organisms WHERE abbr LIKE 'a%'; --统计abbr以「a」开头的所有记录数
COUNT(abbr)
-----------
258