现在的位置: 首页 > 综合 > 正文

android sqlite数据库操作笔记

2016年05月21日 ⁄ 综合 ⁄ 共 3014字 ⁄ 字号 评论关闭

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;

抱歉!评论已关闭.