常用数据库
关系型数据库
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
非关系型数据库
以键值对存储,且结构不固定
JSON
Redis
MongoDB
sqlite数据库
特点
开源免费,C语言开发
代码量少,1万行左右,总大小10M以内
文件型数据库,可以移动,跨平台移植性好
理论数据容量最大2T
安装sqlite3数据库
版本:sqlite3.22.0
安装命令:
sudo apt-get install sqlite3
安装相关库:
sudo apt-get install libsqlite3-dev
测试:
sqlite3 xxx.db
sqlite3学习
支持的数据类型
NULL:空值
INTEGER:整形
REAL:浮点型
TEXT:字符串类型
BLOB:根据输入进行存储
sqlite3相关的命令
.help
:查看支持的命令
.tables
:查看当前数据库中的表
.headers on/off
:打开或者隐藏表头
.mode column
:设置列左对齐
.quit
:退出数据库
sqlite3支持的SQL语句
注意事项
SQL语句后面必须要有分号
sqlite不区分大小写
创建表
语法:
create table 表名(列名1 数据类型, 列名2 数据类型, 列名3 数据类型)
示例:
create table class1(id INTEGER, name TEXT, age INTEGER, score REAL)
数据插入
语法:
insert into 表名 values(值1, 值2, 值3)
示例:
insert into class1 values(1, "zhangsan", 19, 88.5)
查询数据
查询所有列数据:
select * from 表名
查询指定列数据:
select 列名1, 列名2, 列名n from 表名
条件查询:
select * from 表名 where 列 条件
关系运算符:>
, <
, >=
, <=
, =
, !=
, and (&&)
, or (||)
模糊查找(字符串):
select * from 表名 where 列 like "%梅"
select * from 表名 where 列 like "__梅"``%
:可以模糊匹配多个
字符_
:只能模糊匹配一个字符
排序查找:
升序排序:
select * from 表名 order by 列名 ASC
降序排序:select * from 表名 order by 列名 DESC
删除数据
语法:
delete from 表名 where 删除的条件
示例:
delete from class1 where score < 80
修改数据
语法:
update 表名 set 列 = 新值 where 条件
示例:
update class1 set score = 100 where name = "wanger"
删除一张表
语法:
drop table 表名
设置主键值自动增长列
注意:
主键值自动增长列必须是INTEGER类型
在创建表时,主键值自动增长列要增加:PRIMARY KEY AUTOINCREMENT
示例:
create table class2(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL)
插入数据时,主键值自动增长列给NULL,让其自动增长
示例:
insert into class2 values(NULL, "张三", 90)
时间相关
date("now")
:年-月-日
datetime("now", "+8 hours")
:年-月-日 时:分:秒
sqlite的可视化工具
安装命令:
sudo apt-get install sqlitebrowser
使用方法:
sqlitebrowser xxx.db
sqliite3提供的C/C++ API(应用程序接口)
sqlite3_open
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打开一个数据库文件
参数:
filename
:数据库名称
ppDb
:保存数据库句柄的指针的地址
返回值:
成功:SQLITE_OK
失败:错误码
sqlite3_close
int sqlite3_close(sqlite3*);
功能:关闭数据库
sqlite3_exec
int sqlite3_exec(
sqlite3*pdb, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:执行SQL语句
参数:
pdb
:数据库句柄
sql
:要执行的sql语句
callback
:执行select语句时使用的回调函数
arg
:给回调函数传递的参数(实参)
errmsg
:保存出错信息
返回值:
成功:SQLITE_OK
失败:错误码
回调函数
功能:执行select语句时调用的回调函数
参数:
arg
:sqlite3_exec传递的第四个参数
column
:查询到的数据的列数
column_values
:指针数组,多个指针分别指向每一列数据的字符串
column_name
:指针数组,多个指针指向每一列的列名
注意:回调函数成功的话必须要有返回值,返回0
从数据库查询出来的数据,统统是字符串类型
从数据库中查询数据,查到几条,回调函数就会被执行几次