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;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章