android sqlite数据库操作笔记

1、sql语句

select * from table1 limit 19,11;//查询table1的第20条到30条的记录

replace into table(id,name) value (1,”bill”);//如果没有这条就加入,有就修改
create tabel tabel2 as select * from table1;// copy table1的数据和结构到table2中
create view if not exists view1 as select * from tabel;//创建视图

2、sql函数

abs(x)

转换整形再取绝对值

 

changes();

select changes();//最近影响行数

 

coalesce();返回第一个不为空的数据

selecet coalesce(name,id) as value from tabel;

 

ifnull();只有两个参数的coalesce();

select ifnull(name,id) as value from tabel;

 

length(x)函数
x是字符型的数据,返回字符的个数
x是Blob类型的值,返回二进制数据中包含的字节数
x为null,返回null

x是数值型,做为字符串处理

 

like(x,y)函数与y like x子句的功能一样,都可以使用通配符,%表示0个或是多个字符,_表示使用单个字符
name中的字段像bill的
select * from table1 where like(‘%bill%’,name);
select * from table2 where name like ‘%bill%’;
三个参数的like的第三个参数是用来转义的
eg:select like(‘a%%’,’%abcd’,’a’);
执行上面的SQL语句会返回1,也可以将其当作true。这里a被第3个参数设成了转意符,所以
第1个“%”并不会被看作通配符,而会被当成普通字符处理。第2个%是通配符。因此,这条sql
语句匹配的是所有以“%”开头的字符串,“%abcd”符合匹配条件。

nullif(x,y)函数,x与y不相同的话就返回x,x与y相同的话就返回null

substr(x,y);
— 从“abcdefg”的第2个位置截取后面所有的字符串,结果是“bcdefg”
select substr(‘abcdefg’ , 2)
— 从“abcdefg”的第2个位置截取长度为3的字符串,结果是“bcd”
select substr(‘abcdefg’, 2, 3)
— 从“abcdefg”右侧第2个位置截取所有的字符串
select substr(‘abcdefg’, -2)
— 从“abcdefg”右侧第4个位置截取长度为2的字符串,结果是“de”
select substr(‘abcdefg’, -4, 2)

typeof(field1);获取当前字段的数据类型;
select typeof(field1) from table1;

sqlite支持5个日期和时间函数为:date,time,datetime,julianday,strftime;

把2012-11-01改为2011-12-01;select date(‘2012-11-01′,’-1 years’,’+1 months’);

输出当前时间至 1970-01-01 的秒数的SQL语句如下:
— %s中的s为小写字母
SELECT strftime(‘%s’,’now’);

格式置挽符。
虽然使用date、time等函数可以按一定格式输出日期和时间字符串,但使用strftime 函数加上
格式置换符可以更灵活地输出各种格式的日期和时间字符串,下面是SQLite支持的格式置换符。
ó  %d:两位的日。如果不足两位,前面补0。
ó  %f:形如SS.SSS的秒。其中后面3个 SSS表示毫秒。
ó  %H:24 进制的小时。
ó  %j:一年中的第几天(001 至 366)。
ó  %J:朱莉安(Julian)日。
ó  %m:两位的月(01-12),不足两位的前面补0。
ó  %M:两位的分(00 至 59),不足两位的前面补0。
ó  %s:从 1970-01-01 到现在的秒数。
ó  %S:两位的秒(00 至 59),不足两位的前面补0。
ó  %w:周(0至6),0表示星期日,依此类推。
ó  %W:一年中的第几周(00-53)。
ó  %Y:年(0000-9999)。
ó  %%:百分号(%)。

调节器(Modifier)
SQLite 支持的 5 个日期和时间函数都允许传入 1 个或多个调节器。所谓调节器,就是指可以
对日期和时间进行微调。例如,对月份加1,对日减2等。下面是SQLite 支持的调节器列表。
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+
前6个调节器可以改变日期和时间的值。例如“+1 years”表示日期中的年加1。“-2 months”
表示日期中的月份减2。如果在日期和时间变化后不符合日期的规则,则会依次顺延。例如,如果
对 2001-03-31 使用“+1  months”,从表面看就会变成2001-04-31,但4月份只有 30天,因此,日
期会顺延至2001-05-01。
以“start of”开头的调节器(第7个至第9个调节器)表示采用当前年、月、日的第1天。例
如,如果当前日期是 2011-07-02,使用“start of month”后,无论是输出日期,还是使用其他的调
节器,都会从 2011-07-01开始算起。
“weekday N”调节器可以将日期设为离现在最近的未来的某一天。其中N从0至6,分别表示
星期日至星期一。例如,当前日期是 2011-07-02(星期六),如果使用“weekday 2”,表示当日期
调整为离 2011-07-02 最近的星期三,也就是 2011-07-06。如果使用“weekday 6”表示当前日期调
整为离 2011-07-02 最近的星期六,而2011-07-02就是星期六,因此,日期不做调整。
“unixepoch”调节器必须紧跟在时间字符串(DDDDDDDDDD 格式)后面,否则不起作用。
该调节器会将时间字符串转换成YYYY-MM-DD HH:MM:SS格式。
“localtime”调节器要求UTC格式的时间字符串在 localtime的左侧。localtime会将UTC格式
的时间字符串根据时区转换成本地的时间。
“utc”正好和“localtime”相反。假设utc左侧的是本地时间字符串,会将其转换成UTC时间
字符串。

请描述 avg(X)函数的 X 参数在如下情况的计算规则。
ó  X为NULL。 ó  X是String 或BLOB。
ó  所有参与统计平均值的字段值都为NULL。
答案:
1.X为NULL,X不参与计算平均值。
2.X是String 或BLOB,分两种情况,如果X可以转换成数值,正常计算其
不可以转换成数值,则将X当作0处理。
3.当所有参与统计平均值的字段值都为NULL时,avg 函数返回NULL。

group_concat(name,’;’);把某一列连接起来
select group_concat(name,’;’) from table1;

标签