数据库文件管理

avatar
作者
筋斗云
阅读量:0

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

    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数据库中,并使用相关函数直接查找打印:

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!