数据库文件管理
创始人
2024-11-13 03:06:22

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

    1.普通文件对数据管理(增删改查)效率低
    2.数据库对数据管理效率高,使用方便

常用数据库:

   1.关系型数据库:

        将复杂的数据结构简化为二维表格形式
        大型:Oracle、DB2
        中型:MySql、SQLServer
        小型:Sqlite

    2.非关系型数据库

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

嵌入式数据库:

    sqlite3:
    stu.db
    1.开源免费, c语言开发
    2.代码量少,1万行左右,总大小10M以内
    3.文件型数据库,可以移动
    4.数据容量最大2T

 sqlite3   xxx.db

  1.sqlite3相关命令

   .help            查看相关手册
   .databases    查看当前数据库所在的路径和名称
   .tables          查看当前数据库中的表
   .schema        查看创建表的结构
   .mode column  列设置位左对齐
   .width 列宽1 列宽2  列宽3   设置各列的宽度

2. sqlite3相关sql语句


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

    create table class1(id integer, name text, age integer, score real);

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

     insert into class1 values(1, "张三", 17, 89.5);

     select 列名 from 表名;
     select 列名1,列名2 from 表名;
     select * from 表名;
    
     select * from 表名 order by 列名 ASC;             //升序排序
     select * from 表名 order by 列名 DESC;             //降序排序
       


     条件查找:

     select * from 表名 where 列名 运算符 值;
     select * from class1 where score>=90;
    
    运算符:
           =
          >
          <
          >=
          <=
          !=


          and
          or

         like

    模糊查找:

    select * from 表名 where 列名 like  "值%";
    模糊查找和"值****"匹配的行
     % 可以模糊匹配多个字符
    _只能模糊匹配一个字符

   select * from 表名 where 列名 like  "值_";


   delete from 表名 where 条件;
   delete from class1 where score>90;


   update 表名 set 列名=新值 where 列名=值;
   update class1 set score= 99 where name="张三";


   datetime("now", "+8 hours");
    
   insert into class2 values(1, "zhangsan", 68, datetime("now", "+8 hours"));


   自动增长列:


   主键值   INTEGER

   create table 表名(id INTEGER PRIMARY KEY AUTOINCREMENT, XXXXX);
   drop table 表名;

   顺序显示

       selete * form 表名称 order by 列名 ASC;  //升序查询
       selete * form 表名称 order by 列名 DESC;  //降序查询
        
       select * from class1 order by score ASC; 升序查询
       select * from class1 order by score DESC;降序查询

   delete

删除表中信息
      DELETE FROM 表名称 WHERE 列名称 = 值

   update

 改表中信息 
      UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

   datetime

datetime('now', '+8 hours');
      select datetime('now', '+8 hours');
      查询当前东八区时间

     insert into class3 values(1, 'zhangsan', 99, datetime('now', '+8 hours'));
     insert into class3 values(2, 'lisi', 100, datetime('now', '+8 hours'));
     insert into class3 values(3, 'wanger', 98, datetime('now', '+8 hours'));


   drop table 表名称

 删除一张表

3. sqlite3相关c函数接口

 1.sqlite3_open():

  int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
功能:打开一个数据库,如果不存在则创建
参数:
        filename : 数据库名称
        ppDb :    sqlite3句柄的地址    
返回值:
          成功: SQLITE_OK
          失败:错误码

2.sqlite3_exec:

  int sqlite3_exec(
  sqlite3*pdb,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void * arg,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

功能:用来执行sql语句
参数:
          pdb : 数据库句柄
          sql : 要被执行的sql语句的首地址
         callback : 当使用查询方式时,每查询到一条结果,该回调函数会被触发
                          int (*callback)(void*arg,int column,char**value,char**title);
                          arg : sqlite3_exec第4个参数
                          column :查询到的数据的列数
                           value  :查询到的一行数据多列值的首地址集合
                            title : 查询到的一行数据多列标题的首地址集合

                         注意:1. 回调函数必须要return;
                                    2. 每查找到一条,都会触发一次回调

         arg : 回调函数的第一个参数
          

返回值:成功: SQLITE_OK

3.sqlite3_close();

  int sqlite3_close(sqlite3*);
      功能:
        关闭数据库句柄,释放空间

4.sqlite3_errmsg():

  const char *sqlite3_errmsg(sqlite3*);
      功能:
        获得出错原因
 

使用linux调用sqlite3函数,将英文字典写入sqlite数据库中,并使用相关函数直接查找打印:

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...