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

数据库文件管理

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • hcip作业1
  • apex正则表达式匹配富文本字段内容,如何只匹配文本而忽略富文本符号
  • Astro 实现TodoList网页应用案例
  • 【机器学习基础】Scikit-learn主要用法
  • 【问题处理】海康视频websocket代理问题(websocket在业务系统https协议下调用海康ws协议)
  • 想提交BCSP小高组T4的同学请看这里~
  • 链接器找不到一些ACADO库中的函数定义,导致未定义引用的错误。
  • Leetcode 3143. 正方形中的最多点数(二分、数组字符串、位运算集合)
  • 函数function3
  • 解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南
  • 量化金融人都在看哪些顶刊
  • C#--DirectShowLib 关闭自动白平衡和自动曝光时间
  • MATLAB基础操作(二)
  • Vue Router 详解:让你的单页面应用(SPA)畅行无阻
  • Flink 实时数仓(五)【DWD 层搭建(三)交易域事实表】
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • canvas 绘制双线技巧
  • JAVA_NIO系列——Channel和Buffer详解
  • javascript数组去重/查找/插入/删除
  • Koa2 之文件上传下载
  • MaxCompute访问TableStore(OTS) 数据
  • SQLServer之创建数据库快照
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 从重复到重用
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 那些年我们用过的显示性能指标
  • 排序算法之--选择排序
  • 如何解决微信端直接跳WAP端
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #职场发展#其他
  • $.ajax()参数及用法
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (LeetCode C++)盛最多水的容器
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (算法设计与分析)第一章算法概述-习题
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .net core Redis 使用有序集合实现延迟队列
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • //TODO 注释的作用
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [AHK V2]鼠标悬停展开窗口,鼠标离开折叠窗口
  • [Android]竖直滑动选择器WheelView的实现
  • [C++]拼图游戏
  • [CDOJ 1343] 卿学姐失恋了
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态