数据库相关


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

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

    2.非关系型数据库
        以键值对存储,且结构不固定 
        //JSON
        Redis
        MongoDB


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


sqlite3的安装
    1.在线安装
        sudo apt-get install sqlite3
        sudo apt-get install libsqlite3-dev
        
        
    2.源码安装
        1.sqlite-autoconf-3080403源代码.tar.gz拷贝到Ubuntu系统Desktop目录中
        2.tar -zxvf sqlite-autoconf-3080403源代码.tar.gz
        3.cd sqlite-autoconf-3080403
        4../configure                    // 生成makefile
        5.make                           // 编译源码
        6.sudo make install              // 安装

        
1.sqlite3 操作指令
    1)命令
     
    2)SQL语句
        增 删 改 查
        
        
2. sqlite3  API接口(应用程序接口)

增,删, 改, 查        
        
https://www.runoob.com/sqlite/sqlite-tutorial.html

sqlite命令:
    1..help
      查看sqlite3支持的相关命令
      
    2..quit
      退出sqlite3数据库
    
    3..tables
      查看数据库中的所有表
      
    4..schema tablename
      查看tablename创建时的SQL语句(表的结构)
        
    5..headers on/off
      开启关闭列名称
      
    6..mode column 
      以左对齐列宽显示数据 
      
    7..width 第一列宽度 第二列宽度 第三列宽度 ...
      设置column模式显示下的每列的宽度
    8..databases 
       查看库的路径和名称 

    
SQL语言:
    1.create table 
      创建表
      create table 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....);
      
      sqlite3数据类型:
      BLOB:自动检测型
      INTEGER : int
      REAL:double float
      TEXT: char 字符串
      NULL:值是一个 NULL值。
      
      表不存在,则创建,存在不创建
      create table if not exists 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....);

    2.insert into 
      插入表
      INSERT INTO 表名称 VALUES(值1, 值2,....)    

    
    4.select 
      查表 
      SELECT * FROM 表名称
      SELECT 列名称 FROM 表名称
      SELECT 列名称1,列名称2,列名称3 FROM 表名称
    
    5.where
      1)条件匹配
      SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
      
      运算符:
      >
      =
      <
      !=
      and
      or
      select * from class where score <70 or score>91;

      2)模糊查询
      SELECT * FROM 表名称 WHERE 列名 like '%冬梅'; 
      SELECT * FROM 表名称 WHERE 列名 like '马%';
      SELECT * FROM 表名称 WHERE 列名 like '马__';
      
      百分号(%)代表零个、一个或多个数字或字符。
      下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
     
      3)顺序显示
     
     
        selete * form 表名称 order by 列名 ASC;  //升序查询
        selete * form 表名称 order by 列名 DESC;  //降序查询
        
       select * from class1 order by score ASC; 升序查询
       select * from class1 order by score DESC;降序查询

        
    6.delete
      删除表中信息
      DELETE FROM 表名称 WHERE 列名称 = 值
    
    7.update
      改表中信息 
      UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    
    8.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'));

    10. 设置主键值自动增长列
        create table 表名称(id INTEGER PRIMARY KEY AUTOINCREMENT, 类名称 数据类型, ...);

          
    11. drop table 表名称
        删除一张表
        
=============================================================
数据库维护命令:

      安装可视化工具
      sudo apt-get install sqlitebrowser
      
      sqlitebrowser xxx.db

      NavicatSqlite3    Windows下图形操作接口
        

==================================================================================================================================
sqlite数据库编程:
    1.编程框架
    打开数据库---》读写数据库(增,删,改,查)---》关闭数据库
    
    sqlite3.h
    -lsqlite3
    
    2.sqlite3函数接口:
        1.sqlite3_open
        int sqlite3_open(
            const char *filename,   /* Database filename (UTF-8) */
            sqlite3 **ppDb          /* OUT: SQLite db handle */
        );
        功能:
            打开一个数据库文件获得操作数据库文件的句柄
            如果数据库存在,则打开;不存在,则创建
        参数:
            filename:数据库文件路径 
            ppDb:存放句柄指针空间的首地址
        返回值:
            成功返回SQLITE_OK

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

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

    4.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语句
        参数:
            sqlite3*:数据库句柄 
            sql     :SQL语句字符串首地址
            callback:回调函数(只有select时使用)
            void *  :回调函数的传参(只有select时使用)
            char **errmsg:出错信息存放空间首地址
        返回值:
            成功返回SQLITE_OK 0
        
        回调函数类型:
        int fun(void* para,int n_column,char** column_value,char** column_name);
        参数:
            para         : sqlite3_exec传递的第四个参数
            n_column    :查询到数据的列数
            column_value:查询结果每个字段的首地址集合
            column_name :查询结果每个字段的字段名称首地址集合
        
        注意: 
              1. 回调函数查询到几行数据就执行几次;
              2.回调函数必须要返回0,否则sqlite3_exec调用失败
              3.数据库中查出的数据均为字符串
            
            
    5.sqlite3_free
      void sqlite3_free(void*);
      功能:释放保存出错信息的空间
      

作业:
    1.将dict.txt文件中的内容读出并解析后存入数据库文件中
      支持用户在终端输入单词,在数据库中查询单词的含义
      并将含义打印在终端
      
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值