自学嵌入式day41,数据库

。

数据库可根据规模分为大型(如Oracle)、中型(如MySQL/MSSQL)和小型(如SQLite)。常见类型包括关系型数据库,它使用结构化查询语言(SQL)进行管理。相关名词包括:

  • DB(数据库):存储数据的实体。
  • DBMS(数据库管理系统):软件系统,用于管理数据库。
  • MIS(管理信息系统):集成数据库的业务系统。
  • OA(办公自动化):利用数据库的办公应用。
嵌入式数据库与SQLite

SQLite(www.sqlite.org)是一个开源的嵌入式数据库,由C语言开发,常用于Linux内核(www.kernel.org)和GNU项目。其特点包括:

  1. 开源且代码量少(约1万行),总大小在10MB以内。
  2. 绿色软件,无需安装即可使用。
  3. 文件型数据库,数据库文件可移动。
  4. 支持数据容量高达2TB。
安装与编译

在Linux系统中,安装SQLite及其开发库的命令如下:

bash 复制代码
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev

编译SQLite程序时,使用gcc链接SQLite库:

bash 复制代码
gcc test.c -lsqlite3
SQLite终端指令

在SQLite命令行界面中,常用指令包括:

  • .database:查看关联的数据库文件。
  • .table:列出数据库中的表。
  • .schema:显示表的创建语句。
  • .q、.quit或.exit:退出数据库。
  • .header on:启用表头显示。
SQL语句基础

SQL语句必须以分号结尾。以下是基本操作示例:

  • 创建表 :定义表结构。

    sql 复制代码
    CREATE TABLE user(id INT, name CHAR, age INT);
  • 删除表 :移除表及其数据。

    sql 复制代码
    DROP TABLE user;
  • 插入数据 :添加新记录。

    sql 复制代码
    INSERT INTO user VALUES(3, 'wang', 11);
  • 查询数据 :检索满足条件的记录。

    sql 复制代码
    SELECT * FROM user WHERE age > 20 OR age < 50;
  • 修改数据 :更新现有记录。

    sql 复制代码
    UPDATE user SET id = 1 WHERE name = 'li';
  • 删除数据 :移除指定记录。

    sql 复制代码
    DELETE FROM user WHERE id = 1 OR id = 2;
SQLite编程(C语言API)

SQLite提供了C API用于数据库操作,基本步骤为:

  1. 打开数据库 :使用sqlite3_open函数。
  2. 执行SQL语句 :使用sqlite3_exec函数。
  3. 关闭数据库 :使用sqlite3_close函数。

以下是一个完整示例,演示如何插入数据:

c 复制代码
#include <sqlite3.h>
#include <stdio.h>

int main(int argc, char** argv) {
    sqlite3* db = NULL;
    int ret = sqlite3_open("123.db", &db);  // 打开数据库文件
    if (ret != SQLITE_OK) {
        fprintf(stderr, "sqlite3_open error: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }

    char* errmsg = NULL;
    char sql_cmd[512] = "INSERT INTO user VALUES(6, 'lvbu', 31);";  // SQL插入语句
    ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg);  // 执行语句

    if (ret != SQLITE_OK) {
        fprintf(stderr, "sqlite3_exec error: %s\n", errmsg);
        sqlite3_free(errmsg);  // 释放错误消息内存
        sqlite3_close(db);
        return 1;
    }

    sqlite3_close(db);  // 关闭数据库
    return 0;
}
相关推荐
Zenova EdgeOS12 分钟前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
KKKlucifer15 分钟前
国内数据安全服务的产品智能化转型:大模型赋能下的技术能力重构分析
大数据·数据库·重构
字节跳动开源1 小时前
OpenViking 上线原生 3D 内容理解模型
数据库·开源
CCIE-Yasuo3 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
这个DBA有点耶3 小时前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
涛思数据(TDengine)3 小时前
从工业本体到 AI 原生:TDengine 出席 2026 QCon 分享工业数据基础设施路径
大数据·数据库·人工智能·tdengine·工业
Jesse_EC4 小时前
换乘次数最少的路径 SQL 查询详解与实战经验——从 WITH RECURSIVE 到 pgRouting
数据库·postgresql
工控丫丫4 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
这个DBA有点耶5 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
无言听风雨丶6 小时前
Redis 运维实战与排错
运维·数据库·redis