数据库(专业存储数据)

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

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

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

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

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 数据类型) ;

       2. 插入数据
           insert into 表名 values(值1, 值2, 值3);

       3. 查询
          select 列名1,列名2  from 表名;
          select *  from 表名;
         条件查找:
          select *  from 表名 where 列 关系运算符 值;
          关系运算符:   >   <   =    !=, >=, <=, and,or
         like : 模糊匹配

         % 可以通配多个字符
        _  只能通配一个字符

        升序排列
        select * from 表名 order by 列名 ASC;
        降序排列:
        select * from 表名 order by 列名 DESC;

    4. 删除一行
        delect from 表名 where 列名 关系运算符 值;
    5. 删除一张表
        drop 表名;      

    6. 修改    
        update 表名 set 列名=新值 where 列=值;

    7. 设置主键值自动增长列
        1. 主键值自动增长列的数据类型必须是INTEGER
        2. 类名 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 命令(如 INSERTUPDATEDELETECREATE 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();

创建插入示例:

从数据库中查找数据

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值