一、数据库
数据库文件与普通文件区别:
普通文件对数据管理(增删改查)效率低2.数据库对数据管理效率高,使用方便
常用数据库:
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:0racle、DB2
中型:MySq1、sQLServer
小型:Sqlite
2.非关系型数据库以键值对存储,且结构不固定。//JSON
Redis
MongoDB
嵌入式数据库:
sqlite3:
stu.db
1.开源免费,c语言开发
2.代码量少,1万行左右,总大小10M以内
3.文件型数据库,可以移动
4.数据容量最大2T
数据库:
数据存储:
变量、数组、链表-------------》内存 :程序运行结束、掉电数据丢失
文件 : 外存:程序运行结束、掉电数据不丢失
数据库: 外存:程序运行结束、掉电数据不丢失;专业的管理数据
sqlite3:
sqlite3 xxx.db
- sqlite的命令
.help 查询手册
.tables 查看数据库中的表
.headers on/off 打开/关闭表头
.mode column 设置左对齐
.quit 退出数据库
- sqlite支持的SQL(结构化序列语言)语言
数据类型:
INTEGER : 整形
REAL:浮点型
TEXT:文本字符串类型
NULL :空
- 创建一张表
create table 表名(列名1 数据类型, 列名2 数据类型, ....);
- 插入表格
insert into 表名 values(值1, 值2, 值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;
- 删除数据
delete from 表名 where 条件;
- 修改数据
update 表名 set 列名=新值,列名=新值 where 条件;
- 删除表
drop table 表名;
- 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
失败:错误码
二、HTML
1.WEB服务器
并发服务器模型
HTTP模型
HTML