数据库入门:SQLite实战指南

数据库基础概念

数据库是用于存储和管理海量数据的系统,支持增删改查(CRUD)等操作。其层级结构为:数据库(DB)→ 表(行、列)→ 记录(行)→ 字段(列)。

数据库分类

关系型数据库

  • 大型:Oracle
  • 中型:MySQL、MSSQL
  • 小型:SQLite、DBII、PowDB

嵌入式数据库

以SQLite为例,特点如下:

  1. 开源,基于C语言开发,代码量约1万行,体积小于10MB。
  2. 无需安装,绿色软件,数据以文件形式存储,可移动。
  3. 单文件容量上限为2TB。

核心名词解释

  • DB :数据库,如执行SELECTUPDATE等操作的对象。
  • DBMS:数据库管理系统(如MySQL、SQLite)。
  • MIS:管理信息系统,整合数据支持决策。
  • OA:办公自动化系统,依赖数据库管理流程。

SQLite安装与编译

安装命令

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

编译代码

bash 复制代码
gcc test.c -lsqlite3

SQLite常用指令

  • .database:查看关联的数据库文件。
  • .table:列出所有表。
  • .schema:显示建表语句。
  • .header on:启用表头显示。
  • .quit.exit:退出交互环境。

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编程接口

核心函数

  1. sqlite3_open:打开数据库连接。
  2. sqlite3_exec:执行SQL语句。
  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, "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);";
    ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", errmsg);
        sqlite3_free(errmsg);
    }
    sqlite3_close(db);
    return 0;
}

关键注意事项

  • 错误处理:检查sqlite3_opensqlite3_exec的返回值,通过sqlite3_errmsg获取错误信息。
  • 资源释放:务必调用sqlite3_closesqlite3_free避免内存泄漏。

通过上述内容可快速掌握SQLite的基础操作与编程方法。

相关推荐
chlk12316 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑17 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件17 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统