首页 > 操作系统 >Linux安装SQLite 3教程:嵌入式数据库基本操作详解

Linux安装SQLite 3教程:嵌入式数据库基本操作详解

来源:互联网 2026-05-16 20:51:12

SQLite是嵌入式常用数据库,Linux多预装命令行工具,C开发需另装开发包。使用时要区分点开头的元命令和以分号结尾的SQL语句,避免操作无响应。注意验证安装、正确使用分号及区分命令类型,可防止常见操作错误。

在嵌入式开发和轻量级数据存储领域,SQLite 几乎是一个绕不开的名字。它以其零配置、无服务器、单文件数据库的特性,赢得了从移动应用到桌面软件的广泛青睐。不过,对于刚接触它的开发者来说,从安装到第一个成功的查询,中间可能会遇到几个不大不小的“门槛”。今天,我们就来把这些常见的坑点捋清楚。

Linux安装SQLite 3教程:嵌入式数据库基本操作详解

长期稳定更新的攒劲资源: >>>点此立即查看<<<

确认系统是否已自带 sqlite3

好消息是,现在绝大多数主流的 Linux 发行版,比如 Ubuntu 22.04 及以后版本、Fedora、Debian 这些,默认就已经预装了 sqlite3 命令行工具。验证方法很简单,打开终端输入 sqlite3 --version,如果看到类似 3.37.2 的版本号输出,那就说明工具本身是可用的。

但这里有个关键点需要划重点:能运行命令行工具,不等于能进行 C 语言开发。这两者是两码事。

新手容易在这里产生误判:

  • 执行 which sqlite3 命令有输出,只代表终端能找到这个程序,但编译 C 程序时需要的头文件(比如 sqlite3.h)可能并不存在。缺少开发包,编译时就会报 #include 找不到文件的错误。
  • 像 CentOS 或 RHEL 8 及以上的系统,默认可能只安装了运行时工具,开发包需要单独安装:sudo yum install sqlite-devel
  • 在一些为嵌入式环境定制的极简系统镜像里(例如用 Buildroot 或 Yocto 构建的),可能连基础工具都没装,这就需要手动部署二进制文件或者进行交叉编译了。

Ubuntu/Debian 安装 sqlite3 与开发依赖

如果第一步验证时直接报了 command not found,那就需要手动安装。在基于 Debian 的系统上,命令很直观:

sudo apt update
sudo apt install sqlite3 libsqlite3-dev

请注意,libsqlite3-dev 这个包必须安装。没有它,你的 C 程序编译之路就会卡在第一个关卡——sqlite3.h: No such file or directory。对于 Python 开发者来说,情况则好得多,因为 sqlite3 模块是 Python 的标准库,通常无需额外安装。除非你想使用更新的 pysqlite3 来替换内置版本,那才需要动用 pip。

安装完成后,怎么才算真正“可用”了呢?光看版本号还不够,得实际操作一下:

  • 运行 sqlite3 test.db,如果成功进入了 sqlite> 提示符,并且当前目录下生成了 test.db 文件,这才算真正打开(或创建)了一个数据库文件。
  • 如果遇到 unable to open database file 的错误,先别慌,检查一下当前目录是否有写入权限。或者,直接使用绝对路径来指定数据库文件位置,比如 sqlite3 /tmp/test.db
  • 退出时,记住要用 sqlite 自己的元命令 .exit.quit,直接输入 exit 是没用的,那是退出系统 shell 的命令。

.tables 没输出?先看 .database 和分号有没有漏

很多朋友第一次用 .tables 命令查看表时,发现一片空白,就以为是命令失效了。其实,.tables 这个元命令非常“安静”,它只显示当前已打开的数据库中确实已经创建并提交了的表。没有输出,它也不会提示“空数据库”。

遇到这种情况,可以按以下步骤排查:

  • 首先,输入 .database 命令。这个命令会告诉你当前连接到了哪个数据库文件。如果输出显示 main: :memory:,那说明你启动 sqlite3 时没有指定文件名,程序默认使用了一个内存数据库。所有操作在退出后都会消失。解决办法就是退出重来:sqlite3 myapp.db
  • 其次,检查你的建表语句。SQL 语句必须以分号 ; 结尾。比如 CREATE TABLE users(id INTEGER, name TEXT);。如果漏掉了这个分号,你输入的语句就只是被缓存起来,并没有真正执行,.tables 自然什么也看不到。
  • 可以用 .schema 命令来验证。如果表真的存在,它会打印出创建该表的 SQL 语句;如果输出是空白,那就确认表确实没建成功。
  • 最后,注意表名的大小写问题。除非建表时用双引号明确指定了表名(如 CREATE TABLE "Log"),否则后续查询时表名必须严格匹配大小写。而 .tables 命令在显示时是不带引号的,这可能会造成一些混淆。

INSERT/SELECT 没反应?分号和点命令别混用

这大概是新手最常卡住的地方了:把 SQL 语句当成点命令来用,或者反过来。sqlite3 的交互模式严格区分两类指令:

  • 点命令:所有以英文句点 . 开头的,都是 sqlite3 自身的元命令,比如设置显示模式的 .headers on.mode column。这类命令不需要以分号结尾,而且也不能跟在 SQL 语句后面连续书写。
  • SQL 语句:所有标准的 SQL,包括 INSERTSELECTUPDATE 等,都必须以分号 ; 结尾。如果忘了加分号,光标会跳到下一行并等待你继续输入,看起来就像是程序“卡住”了,没有任何反应。

这里有几个实用技巧:

  • 一进入 sqlite3 环境,建议先执行 .headers on。这样在执行 SELECT 查询时,结果会显示列名,否则你看到的只是一堆数据,容易误以为查询没结果。
  • 插入数据后,如果不确定是否成功,别只看命令行有没有报错。执行一句 SELECT COUNT(*) FROM 表名; 来验证,记得带上分号。

来看一个完整的操作示例,感受一下正确的节奏:

sqlite3 app.db
sqlite> .headers on
sqlite> .mode column
sqlite> CREATE TABLE tasks(id INTEGER PRIMARY KEY, title TEXT);
sqlite> INSERT INTO tasks(title) VALUES ('learn sqlite');
sqlite> SELECT * FROM tasks;

还有一个容易被忽略的细节是:sqlite3 默认是自动提交模式,但这里的“自动提交”指的是每个以分号结束的独立语句本身就是一个事务。如果你在多行输入一个复杂的 SQL 时漏掉了结尾的分号,那么整个交互会话就会处于一种“悬停”状态——不报错,也不继续执行。在脚本或自动化场景中,这种静默等待尤其危险,往往需要靠 Ctrl+C 来中断。理解并区分好点命令和 SQL 语句,是顺畅使用 sqlite3 命令行工具的关键第一步。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。