原文网址 http://blog.csdn.net/jzj1993
--创建表
CREATE TABLE IF NOT EXISTS table1(id INTEGER PRIMARY KEY, name text NOT NULL, age INTEGER);
--删除表
DROP TABLE IF EXISTS table1;
--增
INSERT INTO table1(id,name) VALUES(1,'Tom');
--改
UPDATE table1 SET name='Tom',age=5 WHERE id=5;
--删
DELETE FROM table1 WHERE id=5;
--查(单个表)
SELECT count(*) FROM table1;
--所有列
SELECT * FROM table1 WHERE id=5;
--部分列
SELECT id,name FROM table1 WHERE id=5;
--排序
SELECT * FROM table1 WHERE id=5 ORDER BY hour,min ASC;
SELECT * FROM table1 WHERE id=5 ORDER BY id,age DESC;
--查(多个表)
SELECT t1.name,t2.age FROM table1 AS t1,table2 AS t2 WHERE t1.id=t2.id;
SELECT m.file, m.artist, m.title, m.format, list.title list_name
FROM musicResource m
LEFT OUTER JOIN playlistMusics p ON m.file IS NOT NULL AND m.rid=p.rid
LEFT OUTER JOIN playlistsInfo list ON p.playlist_id=list.id;
SELECT m.file, m.artist || ' - ' || m.title || '.' || m.format f_name, list.title list_name
FROM musicResource AS m, playlistMusics AS p, playlistsInfo AS list
WHERE m.file IS NOT NULL AND LENGTH(m.file)>0 AND m.rid=p.rid AND p.playlist_id=list.id;
SELECT DISTINCT list.title FROM playlistsInfo AS list ORDER BY list.id DESC;
从 SQLite 的 2.3.4 版本开始,如果将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么只需向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。
INSERT INTO mytable VALUES(null,'a','b',1)
在逻辑意义上等价于:
INSERT INTO mytable VALUES((SELECT MAX(id) FROM mytable)+1, 'a','b',1);
一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操作的整形键.注意这个整型键始终比之前插入表中的最后一个键大1。新键相对于表中的已有键来说是唯一的, 但它可能与之前从表中删除的键值重叠。要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT操作将失败并返回一个SQLITE_FULL错误码.
主要数据类型
NULL:空值
INTEGER:带符号的整型,具体取决有存入数字的范围大小
REAL:浮点数字,存储为8-byte IEEE浮点数
TEXT:字符串文本
BLOB:二进制对象
其他常用数据类型
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
datetime 包含日期时间格式,必须写成'2010-08-05'不能写为'2010-8-5',否则在读取时会产生错误