SQLite,是一个轻型的关系型数据库,它的设计目标是支持,嵌入式,它占用的资源非常低,在嵌入式设备中,他可能只需要几百K的内存,它能够支持WIndows/LINUX/等等主流的操作系统,目前版本是SQLite3
主键:唯一标示一条记录的字段(它会随着数据自动增加)
外键:在本表中存在其他表中的主键字段
关系型数据库:就是根据主键和外键关联起来的
多个表之间的联系
数据类型
Boolean数据类型
SQLite没有单独的Boolean存储类。相反,布尔值被存储为整数0(false)和1(true)。
Date与Time数据类型
存储值 格式
TEXT-> 格式为“YYYY-MM-DD HH:MM:SS.SSS" 的日期
REAL -> 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数
INTEGER->从 1970-01-01 00:00:00 UTC 算起的秒数。
常用指令
插入INSERT
INSERT INTO table_name VALUES (8, 'Paul', 24, 'Houston', 20000.00 )
SQLite Update
用于修改表中已有的记录。
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
SQLIte Delete
SQLite 的 DELETE 查询用于删除表中已有的记录
DELETE FROM table_name WHERE [condition];
查询手册
SQLite LIKE 子句
- 百分号(%)
- 下划线()
百分号(%)代表零个、一个或多个数字或字符。下划线()代表一个单一的数字或字符。这些符号可以被组合使用。
SQLite GLOB 子句
SQLite的GLOB运算符是用来匹配通配符指定模式的文本值。
注意GLOB是大小写敏感的
- 星号(*)代表零个,一个或者多个数字或字符
- 问号(?) 代表一个单一的数字或字符
SQLite limit 子句
SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]
选取所对应的表单的个行数
SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] OFFSET [row num]
选取到指定的个数并返回
Example:
SELECT * FROM table_name LIMIT 3 OFFSET 2
选出对应的三个记录
SQLite Order By
SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
ORDER BY 子句的基本语法如下:
SELECT * FROM table_name where 条件 ORDER BY 【键值,键值,…】【 DESC(降序),ASC(升序)】
SELECT * FROM table_name ORDER BY key DESC
从表中选取对应的key以降序排列
SQlite Group By
SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
SELECT column-list FROM table_name WHERE [ conditions ]
GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN
Example:
SELECT NAME, SUM(SALARY) FROM table_name GROUP BY NAME;
C/C++接口
API&描述
- sqlite3_open(const char *filename, sqlite3 **ppDb) 该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。 如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3open() 将创建一个新的命名为该名称的数据库文件并打开
sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) 该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成 在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误 sqlite3exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。
- sqlite3_close(sqlite3*) 该例程关闭之前调用 sqlite3open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成 如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息
连接数据库
int main(int argc, char* argv[]) {
sqlite3 *db;
char *zErrMsg = 0; int rc;
//打开数据库
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db)); exit(0);
}else{
fprintf(stderr, "Opened database successfullyn");
}
sqlite3_close(db);
}
SQLite
重新命名数据库的表
ALTER TABLE database_name.table_name RENAME TO new_table_name;
添加一个新的字段
ALTER TABLE table_name ADD COLUMN SEX char(1);
数据还需要多加练习。