当前位置: 首页 > news >正文

数据库——开篇

一、数据存储方式

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    列名 关系运算符 值;

        模糊查找

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

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

(4)排序

select *from 表名 order by 列名 ASC(升序)/DESC(降序)

(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语句时,每查找到一条数据,则调用一次回调。

例如:1)

2)


http://www.mrgr.cn/news/14991.html

相关文章:

  • 2-80 基于matlab-GUI,实现kalman滤波对目标物的位置进行检测跟踪
  • kafka集群
  • Windows中Git对文件名大小写不敏感的问题解决方法
  • 【区块链 + 司法存证】神州契信区块链电子签约系统 | FISCO BCOS应用案例
  • java调用opencv的流程
  • 基于SpringBoot+Vue+MySQL的图书管理系统
  • 如何从头开始编写一个简单的 RPC 协议(手写 Dubbo 的自定义协议)
  • 【数模修炼之旅】10 遗传算法 深度解析(教程+代码)
  • 【PostgreSQL教程】PostgreSQL 高级篇之 视图
  • 【Java EE】JVM
  • OpenHarmony 实战开发——应用HAP包签名
  • 光学涡旋Talbot阵列照明器的matlab模拟与仿真
  • 【香橙派系列教程】(二十) 系统移植、交叉编译工具链—OrangePi Zero2 SDK说明
  • 100Kg大载重6轴共桨多旋翼无人机技术详解
  • 探索AWS EC2:提升企业云计算能力的理想选择
  • 【hot100篇-python刷题记录】【杨辉三角】
  • html table tbody deleteRow有残留?
  • 酒店预约小程序搭建,让酒店更加智能化
  • IDS、IPS和防火墙的区别是什么
  • 在Unity中使用C#进行Xml序列化时保留特定小数位的方法参考