天天看點

SQLite資料庫的簡單使用-簡單查詢

select strfime('%Y-%m-%d %H:%M:%S','now','localtime');

結果:2011-10-15 22:16:23

select strftime('%s','now','localtime');

結果:1318717087

select date('now');//2011-10-15

select date();//2011-10-15

select time();15:04:27

select time('now');15:04:27 少八個小時

select current_date;

select current_time;

select current_timestamp;

select datetime();//2011-10-15 14:23:23 和中原標準時間差8個小時

select datetime('now','localtime');//2011-10-15 22:24:18 正确時間

select datetime('2011-01-01');

2011-01-01 00:00:00

select datetime('2011-01-01 12:12:12');

2011-01-01 12:12:12

select datetime('2011-01-01 12:12:12','+8 hour');

2011-01-01 20:12:12

select datetime('2011-01-01 12:12:12','+1 day','-1 year');

2010-01-02 12:12:12

算術函數

abs(X) 傳回給定數字表達式的絕對值。

max(X,Y[,...]) 傳回表達式的最大值。

min(X,Y[,...]) 傳回表達式的最小值。

random(*) 傳回随機數。

round(X[,Y]) 傳回數字表達式并四舍五入為指定的長度或精度。

字元處理函數

length(X) 傳回給定字元串表達式的字元個數。

lower(X) 将大寫字元資料轉換為小寫字元資料後傳回字元表達式。

upper(X) 傳回将小寫字元資料轉換為大寫的字元表達式。

substr(X,Y,Z) 傳回表達式的一部分。

randstr()

quote(A)

like(A,B) 确定給定的字元串是否與指定的模式比對。

glob(A,B)

條件判斷函數

coalesce(X,Y[,...])

ifnull(X,Y)

nullif(X,Y)

集合函數

avg(X) 傳回組中值的平均值。

count(X) 傳回組中項目的數量。

max(X) 傳回組中值的最大值。

min(X) 傳回組中值的最小值。

sum(X) 傳回表達式中所有值的和。

其他函數

typeof(X) 傳回資料的類型。

last_insert_rowid() 傳回最後插入的資料的ID。

sqlite_version(*) 傳回SQLite的版本。

change_count() 傳回受上一語句影響的行數。

last_statement_change_count()

create table student

(

id integer PRIMARY KEY,

name varchar(30) not null,

content text,

money numeric(5,2),

birthday datetime default CURRENT_DATE

);

create table student

(

id integer PRIMARY KEY,

name varchar(30) not null,

content text,

money numeric(5,2),

birthday datetime default CURRENT_TIMESTAMP

);

insert into student(name,content,money) values('a','bb',20.9);

select * from student;

create INDEX stuname on student(name desc,content asc) 

随機讀取二條記錄

select * from student order by random() limit 2;

select strftime('%Y-%m-%d %H:%M:%S','now','localtime');

select datetime('now','localtime');

2011-10-12 23:46:40

簡單示例:

SELECT * FROM [pepole] WHERE strftime('%Y-%m-%d',[date])>date('2011-01-15')

SELECT * FROM [pepole] WHERE strftime('%Y-%m-%d',[date])>=date('now','Localtime')

Sqlite3支援的資料類型

NULL

INTEGER

REAL

TEXT

BLOB

但實際上,sqlite3也接受如下的資料類型:

smallint 16 位元的整數。

interger 32 位元的整數。

decimal(p,s) p 精确值和 s 大小的十進位整數,精确值p是指全部有幾個數(digits)大小值,s是指小數點後有幾位數。如果沒有特别指定, 

則系統會設為 p=5; s=0 。

float 32位元的實數。

double 64位元的實數。

char(n) n 長度的字串,n不能超過 254。

varchar(n) 長度不固定且其最大長度為 n 的字串,n不能超過 4000。

graphic(n) 和 char(n) 一樣,不過其機關是兩個字元 double-bytes, n不能超過127。這個形态是為了支援兩個字元長度的字型,例如中文 

字。

vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000

常用的查詢語句

select * from 表 where 日期字段>datetime('now','localtime');

繼續閱讀