qulite3
SQL语言
create table 创建表
使用形式:
create table 表名称(列1 数据类型, 列2 数据类型, ...);
示例:
create table student(姓名 text, 性别 text, 年龄 integer, 成绩 double);
insert into
插入表
使用形式:
insert into 表名称 values(值1, 值2, ...);
示例:
insert into student values("张三", "男", 19, 89.5);
insert into student values("李四", NULL, NULL, 99.99);
insert into student (姓名, 年龄) values ("王二", 18);
select 查看表
使用形式:
select 列1,列2,... from 表名称 where 匹配条件 order by 列名称 asc/desc;
示例:
select * from 表名称;
select 姓名,成绩 from student;
select 姓名,成绩 from student where 姓名 like "%张%";
select 姓名,成绩 from student order by 成绩 desc;
select 姓名 from student where 成绩 > 85 order by 成绩 desc;
delete from 删除表
使用形式:
delete from student where 匹配条件;
示例:
select 姓名 from student where 成绩 > 85 order by 成绩 desc;
update 更新表
使用形式:
update 表名称 set 列1=值1,列2=值2 where 匹配条件;
示例:
update student set 性别="女", 成绩=86.3 where 姓名="王二";
drop table 删除表
使用形式:
drop table 表名称;
多表联合查询
cross join: 交叉连接
将表1中的每一项都与表2中所有项连接获得一张新表
示例:
select student.name as 姓名, lesson.subject as 科目 from student cross join lesson;
select student.name as 姓名, lesson.subject as 科目 from student cross join lesson where 科目 like "语文";
inner join: 内连接
将表1和表2中所有同时满足条件的数据关联在一起
示例:
select grade.stuid as 学号, lesson.subject as 科目, grade.score as 成绩 from grade inner join lesson on grade.lessonid = lesson.id;
sqlite> select student.name as 姓名, lesson.subject as 科目, grade.score as 成绩
...> from grade inner join lesson on grade.lessonid = lesson.id
...> inner join student on grade.stuid = student.id
...> ;
sqlite> select student.name as 姓名, lesson.subject as 科目, grade.score as 成绩
...> from grade inner join lesson on grade.lessonid = lesson.id
...> inner join student on grade.stuid = student.id
...> where 成绩 < 60
...> order by 成绩 desc;
outer join 外连接
sqlite> select grade.stuid as 学号, student.name as 姓名, lesson.subject as 科目, grade.score as 成绩
...> from grade inner join lesson on grade.lessonid = lesson.id
...> left outer join student on grade.stuid = student.id
...> ;
sqlite3函数接口
sqlite3_open
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:
打开一个数据库文件
参数:
filename:数据库文件名称
ppDb:数据库句柄
返回值:
成功返回SQLITE_OK
失败返回错误码
sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3*);
获得出错原因
sqlite3_exec
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:
执行SQL语句
参数:
sqlite3*:数据库句柄
sql:要执行的SQL语句字符串的首地址
callback:回调函数(只有在select语句时会使用,其余SQL语句只需传入NULL),对找到的数据要完成的操作
void *:给回调函数的参数
char **:存放错误信息空间首地址
返回值:
成功返回SQLITE_OK
失败返回错误码
sqlite3_close
int sqlite3_close(sqlite3*);
功能:
关闭sqlite3数据库