数 据 库

一、数据存储方式
1、内存存数据:当程序运行结束,掉电,数据丢失。(数组、链表、变量等)

2、硬盘存数据:程序运行结束,掉电,数据不丢失。

(1)文件:对数据管理(增删改查)效率低。

(2)数据库:专业存储数据,可存大量数据。对数据管理效率高,使用方便。

二、常用数据库
1、关系型数据库:将复杂的数据结构简化为二维表格形式。

eg:大型:Oracle、DB2;中型:Mysql、SQLserver;小型:Sqlite。

2、非关系型数据库:以键值对存储,且结构不固定。

eg:(JSON)、Redis、MongoDB。

三、SQLITE
1、相关命令
【.help】可查看所有命令;【.tables】查看数据库中的表;【.headers on/off】开启/关闭表头;

【mode column】列对齐;【.width 列宽1 列宽2】设置列宽;【.shema 表名】查看表的结构。

2、SQL语句
每句后面必须有一个分号。

sqlite数据类型:①NULL:空,无值。②INTEGER(INT):带符号整数,可变字节(1、2、3、4、6、8)。③REAL(DOUBLE、FLOAT):浮点值,8字节IEEE浮点数字。④TEXT(CHARACTER(20)):文本字符串,数据库编码存储。⑤BLOB:bolb数据,根据输入数据存储。

(1)创建表

create table 表名(列名1 数据类型,列名2 数据类型,列名3 数据类型);

(2)插入数据

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

(3)查询

select 列名1,列名2 from 表名;

select *(通配符 表示所有) from 表明;

条件查找

select * from 表名 where 列名 关系运算符(> = < != >= <=) 值;

select * from 表名 where 列名 关系运算符 值     and/or    列名 关系运算符 值;

eg:

 模糊查找

select *from 表名 where 列名 like 已知信息%;

【_】只能通配一个字符;【%】通配多个字符。

 模糊查找

select *from 表名 where 列名 like 已知信息%;

【_】只能通配一个字符;【%】通配多个字符。

(5)删除一行

delete from 表名 where 列名 关系运算符 值;

 删除表

drop 表名;

(6)修改

update 表名 set 列名 关系运算符 新值 where 列名 关系运算符 值;

(7)设置键值自动增长列

create table 表名(列名 INTEGER PRIMARY KEY AUTOINCREMENT,列名 数据类型,列名 数据类型);

(8)查询当前时间(年月日时分秒)

select datetime("now","+8 hours");

(9)多表联查
①交叉连接:CROSS JOIN;   (x行、y行,产生x*y行,笛卡尔积。)

②内连接:INNER JOIN; 

select  */(列名1 列名2) from 表名1 INNER JOIN 表名2 ON 条件;

③外连接:OUTER JOIN。(左、右、全)

左外连接:select *from 表名1 LEFT OUTER JOIN 表名2 ON 条件;

3、sqlite函数接口
int sqlite3_open(const char *filename(数据库名称) , sqlite3 **pdb(保存数据库句柄中的地址))

功能:打开数据库,如果不存在,则创建。

返回值:成功为SQLITE_OK;失败返回错误码【sqlite3_errmsg()】。

int sqlite3_exec(sqlite3 *pdb(数据库句柄) , const char *sql(要执行的sql语句首地址) , int(*callback)(void *arg , int column_cnt , char ** column_value , char  **column_name) (回调函数), void *arg , char **errmsg)

功能:执行sql语句。

返回值:成功为SQLITE_OK;失败返回错误码【sqlite3_errmsg()】。

参数:int(*callback)(void *arg(传递的参数) , int column_cnt(查找到的数据的列数) , char ** column_value(查找到的行数据的每一列值的地址的集合) , char  **column_name(查找到的行数据的每一列的列名的地址的集合))

在使用sqlite3——exec执行select语句时,每查找到一条数据,则调用一次回调。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 键值数据库(Key-Value Database):是一种基于键值对存储据的数据库系统,其中每个键值对都是一个唯一的键和一个与之对应的值。例如,Redis就是一种流行的键值数据库,用于存储缓存和会话等据。 2. 列族数据库(Column-Family Database):是一种 NoSQL 数据库,其中据按列族分组存储。每个列族包含多个列,可以动态添加或删除列族,而且每个列族可以有不同的列。HBase 是一种流行的列族数据库,用于存储海量结构化据。 3. 图数据库(Graph Database):是一种 NoSQL 数据库,用于处理大规模图形据。图数据库以节点和边组成的图形结构存储据,支持高效的图形遍历和查询。Neo4j 是一种流行的图数据库。 4. 据仓(Data Warehouse):是一种专门用于存储和分析大量历史据的数据库系统。据仓通常包括多个据源,可以用于支持决策支持、业务分析等应用场景。 5. 三元组表(Triple Table):是一种基于 RDF 据模型的表格形式的存储方式,其中每个三元组由一个主题、一个谓词和一个对象组成。Triple Table 通常用于存储语义网据。 6. 据的一致性(Data Consistency):是指在数据库中的据满足一致性约束条件,例如唯一性约束、外键约束、事务一致性等。据的一致性是数据库系统的一个重要特性,可以保证据的正确性和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值