一、数据库基础
数据库:能够对大批量数据进行增删改查管理的软件。
数据库分类
- 关系型数据库
- 数据存放在文件中
- 代表产品:Oracle、MySQL、SQLite
- 非关系型数据库
- 数据存放在内存中,内存数据库
- 代表产品:Redis、Nosql
二、SQLite安装
Ubuntu 安装命令:
sudo apt-get install sqlite3
三、SQLite交互式点命令
| 命令 | 功能 |
|---|---|
.tables |
查看表名称 |
.databases |
列出附加数据库的名称和文件 |
.headers on/off |
开启/关闭列名称显示 |
.mode |
设置数据显示的形式 |
.schema ?TABLE? |
查看表创建的信息 |
.width |
设置显示的宽度 |
四、SQL语句
1. SQLite 支持数据类型
INTEGER:整型REAL:浮点型TEXT:文本字符串BLOB:二进制大对象
2. create table 创建表
语法:
create table 表名 (列名称1 数据类型1, 列名称2 数据类型2, ...);
示例:
create table student (id integer, name text, sex text, age integer, score integer);
3. insert into 插入数据
语法:
insert into 表名 values (值1, 值2, ...);
示例:
insert into student values (1, "张三", "男", 18, 90);
insert into student values (3, "王二", NULL, NULL, NULL);
insert into student (id, name, sex) values (4, "赵五", "男");
4. select 查询语句
语法:
select 列名称1, 列名称2, ... from 表名;
示例:
select * from student;
5. where 条件子句
用于匹配过滤条件。
条件运算符
| 运算符 | 含义 |
|---|---|
= |
等于 |
<> |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
BETWEEN |
在某个范围内 |
LIKE |
搜索某种模式 |
示例:
select name,score from student where name like "赵%";
select name from student where score >= 90;
select name,score from student where name like "赵%" and score >95;
6. update 更新语句
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
示例:
update student set score=91 where name="赵五";
7. delete 删除语句
语法:
delete from 表名称 where 列名称 = 值;
示例:
delete from student where name = "王二";
8. order by 排序
asc:升序desc:降序
示例:
select name,score from student where sex="男" order by score desc;
9. drop table 删除表
语法:
drop table 表名称;
示例:
drop table student;
10. 多表联合查询 joins
cross join:交叉连接inner join:内连接outer join:外连接
cross join 交叉连接
select 学生信息.姓名 as 姓名, 课程信息.名称 as 课程, 课程信息.学分 as 学分 from
学生信息 cross join 课程信息;
inner join 内连接
select 学生信息.姓名 as 姓名, 成绩信息.成绩 as 成绩 from
学生信息 inner join 成绩信息 on 学生信息.ID = 成绩信息.学生ID;
select 学生信息.姓名 as 姓名, 课程信息.名称 as 课程, 成绩信息.成绩 as 成绩 from
学生信息 inner join 成绩信息 on 学生信息.ID = 成绩信息.学生ID
inner join 课程信息 on 成绩信息.课程ID = 课程信息.ID;
outer join 外连接
select 学生信息.姓名 as 姓名,成绩信息.成绩 as 成绩 from
学生信息 left outer join 成绩信息 on 学生信息.ID = 成绩信息.学生ID;
五、SQLite C语言函数接口
1. sqlite3_open
int sqlite3_open(
const char *filename, /* Database filename (UTF‑8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能 :打开数据库文件 参数
filename:数据库文件名ppDb:存放数据库句柄空间的首地址 返回值 :成功返回SQLITE_OK
2. 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语句时使用的回调函数,处理查询到的数据void*:传递给回调函数的参数errmsg:错误信息存放空间首地址
返回值
- 成功返回
SQLITE_OK - 失败返回错误码
3. sqlite3_close
int sqlite3_close(sqlite3*);
功能:关闭数据库连接