一、数据库 :
高效对大批量数据管理的一种软件
二、分类:
关系型数据库
Oracle
Mysql
SQLServer
SQLite
非关系型数据库
Redit
三、SQLite数据库
所有数据库支持:SQL编程语言
四、SQLite数据库的安装:
-
虚拟机网络连通
-
apt-get工具集配置成功
-
安装SQlite软件
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
sudo apt-get install sqlitebrowser
navicat
- 运行sqlite3软件
sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .quit
五、Sqlite3命令
- .databases
查看数据库中的信息
- .tables
查看表名称
- .header(s) ON|OFF
开启/关闭头部显示
- .mode MODE
设置数据的显示格式
csv
column
html
insert
line
list
tabs
tcl
- .schema ?TABLE?
显示创建表时的格式
- .quit
退出
六、SQL语句
- create table
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
例:create table student (学号 integer primary key, 姓名 text, 性别 text,年龄 integer, 成绩 integer);
- drop table
drop table 表名称;
例:drop table student;
- insert into
INSERT INTO 表名称 VALUES (值1, 值2,....)
例:insert into student values (1002, "李四", "女", 13, 80);
insert into student (学号,姓名,性别) values (1009, "熊大", "男");
- delete from
DELETE FROM 表名称 WHERE 列名称 = 值
例:delete from student where 姓名 = "赵五";
- update
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例:update student set 年龄=16,成绩=85 where 姓名="熊大";
- select
SELECT 列名称 FROM 表名称
例:select * from student;
select 学号,成绩 from student;
select 姓名 from student where 成绩<60 and 性别="男";
select 姓名 from student where 姓名 like "%田%";
- order by
ORDER BY 语句用于根据指定的列对结果集进行排序
例:select 学号,姓名 from student where 成绩 > 60 order by 成绩 desc;
select 学号,姓名 from student where 成绩 > 60 order by 成绩 asc;
七、SQL类型
-
INTEGER
-
REAL
-
TEXT
八、多表联合查询 -
cross join
例:select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程 from 学生信息 cross join 学生课程;
- inner join
例:select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 inner join学生成绩 on 学生信息.学号 = 学生成绩.学号;
- outer join
select 学生信息.姓名 as 姓名, 学生成绩.成绩 as 成绩 from 学生信息 left outerjoin 学生成绩 on 学生信息.学号 = 学生成绩.学号;
- 三表联合查询
select 学生信息.姓名 as 姓名, 学生课程.名称 as 课程, 学生成绩.成绩 as 成绩
from 学生信息 left outer join 学生成绩 on 学生信息.学号 = 学生成绩.学号
left outer join 学生课程 on 学生成绩.课程编号 = 学生课程.编号
where 成绩 > 60
order by 成绩 desc;
九、数据库编程
- sqlite3_open
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:
打开数据库获得操作数据库的句柄
参数:
filename:打开文件的路径
ppDb:存放数据库句柄空间的首地址
返回值:
成功返回SQLITE_OK
失败返回错误码,可以通过sqlite3_errmsg来获得其对应的英文描述
- sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3*);
功能:
传入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语句
参数:
数据库句柄
要执行的sql语句
callback:只有select才会用到,执行找到匹配的数据后的操作
对callback回调函数的传参
errmsg:存放出错字符串空间的首地址
返回值:
成功返回SQLITE_OK
失败返回错误码
- sqlite3_free
void sqlite3_free(void*);
功能:
释放申请的空间
- sqlite3_close
int sqlite3_close(sqlite3*);
功能:
关闭sqlite3连接句柄
-----使用示例


