数据库(专业存储数据)

数组、链表、变量----->内存:程序运行结束,数据丢失

文件-------------->硬盘

数据库:专业存储数据,大量数据----------->硬盘

一、数据库文件与普通文件区别:

1.普通文件对数据管理(增刪改查)效率低

2.数据库对数据管理效率高,使用方便

二、常用数据库:

1.关系型数据库:

将复杂的数据结构简化为二维表格形式

大型:Oracle、DB2

中型:MySq1、SQLServer

小型:Sqlite

2.非关系型数据库

以键值对存储,且结构不固定

//JSON

Redis

MongoDB

3.嵌入式数据库:

sqlite3 :

stu.db

1.开源免费,C语言开发;

2.代码量少,1万行左右,总大小10M以内;

3.文件型数据库,可以移动;

4.数据容量最大2T;

三、sqlite3数据库(SQLite 教程 | 菜鸟教程

1.sqlite相关的命令

.tables 查看数据库中的表

.headers on/off 开启或者关闭表头

.mode column 列对齐

.width 列宽1 列宽2 设置每一列的列宽

.schema 表名 查看表的结构

2.sqlite的SQL语句

每个sql语句后面必须要有一个;

INTEGER : 整形

REAL: 浮点型

TEXT:文本类型,字符串

NULL : 空

1.创建表

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

  1. 插入数据

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

  1. 查询

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

select * from 表名;

条件查找:

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

关系运算符: > < = !=, >=, <=, and,or

like : 模糊匹配

% 可以通配多个字符

_ 只能通配一个字符

升序排列

select * from 表名 order by 列名 ASC;

降序排列:

select * from 表名 order by 列名 DESC;

  1. 删除一行

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

  1. 删除一张表

drop 表名;

  1. 修改

update 表名 set 列名=新值 where 列=值;

  1. 设置主键值自动增长列

  2. 主键值自动增长列的数据类型必须是INTEGER

  3. 类名 INTEGER PRIMARY KEY AUTOINCREMENT,

8 .多表联查

内连接 INNER JOIN

外连接 LEFT OUTER

3.sqlite提供的c/c++ API接口

(1)int sqlite3_open(const char *filename,sqlite3 **ppDb);

功能:是 SQLite 的 C 接口中的一个函数,用于打开一个 SQLite 数据库。如果指定的数据库文件不存在,该函数会创建一个新的数据库文件。

函数参数

  • const char *filename:要打开的数据库文件的名称。如果文件不存在,将会创建一个新的数据库。
  • sqlite3 **ppDb:指向 SQLite 数据库的指针的地址。如果打开成功,该指针将指向打开的数据库对象。

返回值

  • 返回值是一个整数,指示操作的结果:
    • SQLITE_OK:成功打开数据库。
    • 其他值:表示错误,可以通过 sqlite3_errmsg() 获取详细的错误信息。

(2)int sqlite3_exec()

功能:用于执行 SQL 命令。

函数原型

int sqlite3_exec( sqlite3 *db, /* 数据库连接对象 */ const char *sql, /* 需要执行的 SQL 语句 */ sqlite3_callback callback, /* 回调函数,用于处理结果 */ void *arg, /* 回调函数的参数 */ char **errMsg /* 错误信息 */ );

参数

  • sqlite3 *db:指向已打开的数据库连接对象的指针。
  • const char *sql:需要执行的 SQL 语句可以是一个或多个 SQL 命令(如 INSERT, UPDATE, DELETE, CREATE TABLE 等),以分号 (;) 作为结尾。
  • sqlite3_callback callback:用于处理结果的回调函数。如果不需要处理结果,可以传入 NULL
  • void *arg:传入回调函数的自定义参数,可以为 NULL
  • char **errMsg:指向字符指针的地址,用于返回错误信息。如果执行成功,通常可以为 NULL

返回值

  • 返回值是一个整数,指示执行的结果:
    • SQLITE_OK:表示成功。
    • 其他的返回值表示不同的错误,可以通过调用 sqlite3_errmsg(db) 获取具体的错误信息

回调函数:int callback(void *data, int argc, char **argv, char **azColName);

参数说明

  1. *void data :用户自定义的参数。在调用 sqlite3_exec() 时,你可以传递一个指针作为这个参数,通常用于在回调中传递上下文信息。

  2. int argc:查询结果中列的数量。

  3. **char argv :一个字符串数组,每个字符串对应于结果集的一列。argv[i] 是第 i 列的值。如果某一列值为 NULL,则对应的元素为 NULL

  4. **char azColName :一个字符串数组,包含了每一列的列名。azColName[i] 是第 i 列的列名。

返回值

  • 回调函数需要返回一个整数。如果返回非零值,SQLite 将终止执行。

(3)sqlite3_close();

创建插入示例:

从数据库中查找数据

相关推荐
中草药z43 分钟前
【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
java·数据库·spring boot·spring·bean·源码阅读
地球资源数据云44 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
Ahern_1 小时前
Oracle 普通表至分区表的分区交换
大数据·数据库·sql·oracle
夜半被帅醒2 小时前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
不爱学习的啊Biao2 小时前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风2 小时前
SpringBoot 集成 MongoDB
数据库·mongodb
Rverdoser2 小时前
MySQL-MVCC(多版本并发控制)
数据库·mysql
m0_748233642 小时前
SQL数组常用函数记录(Map篇)
java·数据库·sql
dowhileprogramming2 小时前
Python 中的迭代器
linux·数据库·python
0zxm3 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite