网络(数据库1)
常用数据库:
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:0racle、DB2
中型:MySq1、sQLServer 小型:Sqlite
2.非关系型数据库以键值对存储,且结构不固定。//JSON
Redis MongoDB
数据存储:
变量、数组、链表 内存 :程序运行结束、掉电数据丢失
文件 : 外存:程序运行结束、掉电数据不丢失
数据库: 外存:程序运行结束、掉电数据不丢失;专业的管理数据
sqlite3:
1.开源免费,c语言开发
2.代码量少,1万行左右,总大小10M以内
3.文件型数据库,可以移动
4.数据容量最大2T
sqlite3 xxx.db
1. sqlite的命令
.help 查询手册
.tables 查看数据库中的表
.headers on/off 打开/关闭表头
.mode column 设置左对齐
.quit 退出数据库
2. sqlite支持的SQL(结构化序列语言)语言
数据类型:
INTEGER(INT): 整形
REAL(FLOAT):浮点型
TEXT:文本字符串类型
NULL :空
(1) 创建一张表
create table 表名(列名1 数据类型, 列名2 数据类型, ....);
(2) 插入表格
insert into 表名 values(值1, 值2, 值3, ...);
(3)查询数据库中的表
查询表中的所有数据:select * from 表名;
查找指定列: select 列名1,列名2 from 表名;
条件查找: select * from 表名 where 列名 关系运算符 值;
关系运算符: = > < != >= <= or (||) and (&&)
模糊查找: select * from 表名 where 列名 like "%梅";
% : 可以匹配多个字符
_ : 只能匹配一个字符
有序查找:
升序查找:select * from 表名 order by 列名 ASC;
降序查找:select * from 表名 order by 列名 DESC;
(4)删除数据
delete from 表名 where 条件;
(5)修改数据
update 表名 set 列名=新值,列名=新值 where 条件;
(6) 删除表
drop table 表名;
(7)获取时间 datetime();
(8)主键值自动增长列(INTEGER)
create table class2(num INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);
3. sqlite提供的C--- API接口
int sqlite3_open(const char *fliename,sqlite3 **ppDb);
功能:打开一个数据库文件
参数:filename:文件名
ppDb:数据库句柄的地址
返回值:
成功:SQLITE_OK
失败:错误码
const char *sqlite3_errmsg(sqliite3 *pdb);
功能:打印一个出错的错误信息
参数:pdb:数据库句柄
返回值:错误码字符串
int *sqlite3_exec(sqliite3 *pdb,const chat *sql,int(*callback)(void *,int,char **,char **),void *,char **errmsg);
功能:执行sql语句
参数:pdb:被执行的数据库
sql:要执行的sql语句
callback:回调函数(函数的指针)
int (*callback)(void* arg,int colum_n,char **column_value,char **column_name);
当使用select查询数据时,误触回调函数执行
参数:arg:sqlite3_exrc传递的第四个参数
column_n:查询到的数据的列数
column_value:保存找到的每一列的元素的值
column_name:每一列的元素的名称。
注意:
回调函数一定要有一个返回值
有几条数据回调函数被触发几次
arg:参数
errmsg:保存错误信息
返回值:
成功:SQLITE_OK
失败:错误码