SQLite 嵌入式数据库

数据库基本概念

数据(Data)
能够输入计算机并能被计算机程序识别和处理的信息集合
数据库 (Database)
数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合
基于嵌入式的数据库
基于嵌入式Linux的数据库主要有
- SQLite, Firebird, Berkeley DB, eXtremeDB
- Firebird是关系型数据库,功能强大,支持存储过程、SQL兼容等
- SQLite关系型数据库,体积小,支持ACID事务
- Berkeley DB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中
- eXtremeDB是内存数据库,运行效率高

SQLite基础

SQLite的源代码是C,其源代码完全开放

SQLite有以下特性:

  1. 零配置一无需安装和管理配置;
  2. 储存在单一磁盘文件中的一个完整的数据库;
  3. 数据库文件可以在不同字节顺序的机器间自由共享;
  4. 支持数据库大小至2TB;
  5. 足够小,全部源码大致3万行c代码,250KB;
  6. 比目前流行的大多数数据库对数据的操作要快;

SQLite安装

Ubuntu20.04环境:
su
apt-get update
apt-get upgrade

安装sqlite3:
sudo apt-get install sqlite3

如果在ubuntu20.04系统中安装sqlite出现下面的错误:

“下列软件包有未满足的依赖关系:
sqlite3 : 依赖: libsqlite3-0 (= 3.8.2-1ubuntu2.2) 但是 3.11.0-1ubuntu1.5 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。sudo dpkg --purge --force-depends libsqlite3-0”

执行以下命令即可:
sudo apt-get install -f
sudo apt-get install libsqlite3-0
sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3

SQLite命令

linux@ubuntu:~$ sqlite3 student.db //启动sqlite
sqlite命令分为两种:

  1. 系统命令
    以'.'开头的命令
    .help 帮助
    .quit 退出
    .exit 退出
    .schema 查看表的结构图
  1. sql命令
    基本的sql命令,不以'.',但是都要以';'结尾。
    1-- 创建一张表
        create table stuinfo(id integer, name text, age integer, score float);

    2-- 插入一条记录
        insert into stuinfo values(1001, 'zhangsan', 18, 80);
        insert into stuinfo (id, name, score) values(1002, 'lisi', 90);

    3-- 查看数据库记录
        select * from stuinfo;
        select * from stuinfo where score = 80;
        select * from stuinfo where score = 80 and name= 'zhangsan';
        select * from stuinfo where score = 80 or name='wangwu';
        select name,score from stuinfo;  查询指定的字段
        select * from stuinfo where score >= 85 and score < 90;

    4-- 删除一条记录
        delete from stuinfo where id=1003 and name='zhangsan';

    5-- 更新一条记录
        update stuinfo set age=20 where id=1003;
        update stuinfo set age=30, score = 82 where id=1003;

    6-- 删除一张表
        drop table stuinfo;

    7-- 增加一列
        alter table stuinfo add column sex char;

    8-- 删除一列
        create table stu as select id, name, score from stuinfo;
        drop table stuinfo;
        alter table stu rename to stuinfo;