数据库(sqlite)、数据库编程

数据库的基本概念

什么是数据库

数据库(database)是用来组织、存储和管理数据的仓库。

为了方便管理互联网世界中的数据,就有了数据库管理系统的概念。用户可以对数据库中的数据进行新增、查询、更新、删除等操作。

数据库的分类

1.关系库数据

1.1Oracle

1.2MySQL

1.3sqlserver

1.4sqlite...

2.非关系型数据库

Redis....

SQL语句

数据库数据类型

创建

 create table(if not exists) 表名称(列1 数据类型, 列2 数据类型, ...);

插入

 insert into 表名称 values(值1, 值2, ...);

查看

select 列1,列2,... from 表名称 where 匹配条件 order by 列名称 asc/desc;
select * from 表名称; 
select 姓名,成绩 from student;

删除(按照行删除)

delete from student where 匹配条件;

更新

update 表名称 set 列1=值1,列2=值2... where 匹配条件;

删除表

 drop table 表名称;

数据库文件格式

数据库文件.db ->  表 -> 列1  列2 列3 

多表联合查询

内连接:选择两个表中,数据重复的部分

当表A中的一条记录对应表B中的多条记录时,会以重复的方式对应多条表B记录出现在结果集中。

当表B中的一条记录对应表A中的多条记录时,会以重复的方式对应多条表A记录出现在结果集中。

外连接

左外连接,会以左边的表A为主表,返回所有行,即使右表B中没有匹配的行。

如果左边的表A在右表B中找不到一条记录,则返回表A所有记录并且表B相应的字段设为null。

如果左边的表A在右表B中找到多条记录,则以相同表A记录和不同表B记录多条显示在结果集中。

这种情况下,其实是把表A中所有记录都查询出来了,包括不满足条件的记录

交叉连接

交叉连接(Cross Join)是一种数据库连接操作, 将两个表的每一行都与另一个表的每一行进行配对,生成的结果集称为笛卡尔积 。 交叉连接不基于任何条件进行连接,它只是简单地将一个表的每一行与另一个表的每一行进行组合,产生的结果是两个表的行数相乘的结果

数据库编程

函数接口

1.sqlite3_open

2.sqlite3_exec

sqlite3*            : open 打开的数据库
const char* sql,    : 执行的sql功能语句
*callback,          : sql语句对应的回调函数
void* data,         : 传递给回调函数的 指针参数
char **errmsq       : 错误信息

回调函数:回调函数的意思是,会先执行*sql对应的功能命令,然后将结果传递给回调函数,回调函数根据结果再进一步执行。这代表着,这个 “回调函数”才是最有意义的,我们要讲我们需要的功能,通过回调函数来实现,不管是获取数据库表中有效信息,还是其他动作。

sqlite3_exec参数解读

第1个参数是打开数据库时得到的指针。

第2个参数const char *sql 是一条 sql 语句,以/0结尾。

第3个参数sqlite3_callback 是回调,当这条语句执行之后,sqlite3会去调用你提供的这个函数。

第4个参数void * 是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数,可以填NULL。等下我们再看回调函数的写法,以及这个参数的使用。

第5个参数char ** errmsg 是错误信息。注意是指针的指针。

回调函数参数解读

int callback(void *arg, int column, char** pcontent,char** ptitle)

/********************************************************
 * 函数名:callback
 * 功  能:
 *        处理找到的数据
 * 参  数:
 *      arg:sqlite3_exec给函数的传参
 *      column:找到的这一条数据的列数(与SQL语句select后面选择的列数有关)
 *      pcontent:指针数组的数组名(指向该条数据每一列字符串首地址的指针数组)
 *      ptitle:指针数组的数组名(指向每一列名称字符串首地址的指针数组)
 * 返回值:
 *       成功返回0 
 *       失败返回-1 
 * 注意事项:
 *      1.函数返回0成功,返回非0会使sqlite3_exec出错
 *      2.每找到一条匹配的数据,则会调用一次callback,所以callback可能被调多次
 ********************************************************/

3.sqlite3_close

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值