SQLite Linux 初学者教程 - 入门 SQLite 教程
本 SQLite Linux 教程适用于希望学习如何开始使用 SQLite 数据库的初学者。 SQLite 是世界上使用最广泛的数据库程序之一。那么,什么是数据库,什么是 SQLite?
在本教程中您将学习:
什么是数据库,什么是 SQLite
快速安装
如何使用 SQLite 创建数据库
SQLite 基础知识
由此,您将能够创建自己的简单数据库,并能够在需要的时间和地点快速使用它们。 SQLite 在世界各地的许多设备中使用。人们应该将其视为计算机学习的基本组成部分。
什么是 SQLite,什么是数据库?
SQLite 是一个开源数据库程序,它使用 SQL 数据库描述符语言的子集。数据库对于将类似的信息包收集到一个地方(数据库)非常有用。 SQL 是众所周知的开放标准。然后,数据库查询语言能够发送查询以从数据库中提取特定数据,或选择所有数据。
为什么选择 SQLite?
最大也是最重要的原因是简单。当我意识到我实际上必须为我正在编写的应用程序使用数据库时,找到合适的候选人并不容易。大多数数据库都是复杂的系统,很像服务器。这就是许多人所说的数据库服务器。这些事情通常需要专业团队来设置、管理和维护。但是,SQLite 使您可以轻松地创建、管理和维护自己的数据库。但是,正如我上面所说,另一个很好的理由是 SQLite 是世界上使用最广泛的数据库程序之一 - 一个非常值得我们研究的工具。
快速安装
那么,让我们开始吧。本教程不是关于安装程序的。还有许多其他教程。但这里有一些建议可能会对 Linux 新手有所帮助。例如,在 Debian 上,可以发出以下命令:
$ apt install sqlite
这可能会安装 SQLite 版本 3。在 Gentoo 中,它将是:
$ emerge sqlite
然后portage会自动加载并编译最新版本。请参阅您的发行版的文档。 (synaptic
是另一个流行的安装程序。)
对于那些喜欢从源代码构建的人,您可以输入以下脚本或下载它:
$ FILE=sqlite-autoconf-3360000
$ wget --show-progress https://sqlite.org/2021/${FILE}.tar.gz
$ tar zxvf ${FILE}.tar.gz
$ cd ${FILE}
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
$ cd -
现在,如果安装成功,请键入以下命令:
$ sqlite
您可能会收到如下消息:
bash: sqlite: command not found
如果您按
,然后按
,您可能会看到:
$ sqlite3
SQLite version 3.35.5 2021-04-19 18:32:05
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
如果这就是您所得到的,那么我们就准备好摇滚了! (替换适当的表达......)如果没有,您的互联网搜索引擎就是您的朋友。
sqlite>
提示意味着 SQLite 正在工作并准备好执行您告诉它的任何操作。现在,通过输入 ^D
或 .exit
退出。
对于示例,我们将假设一个任意人,在本例中为钱币学家(硬币收藏家)。该数据库将被称为 numismatist.db
,模式表将是 coins
。当然,我们欢迎并鼓励您在使用示例时做出改变。
开始使用 SQLite 的方法有很多。我们将从文本文件表示开始,并从那里构建。因此,打开您最喜欢的文本编辑器并编辑 numismatist.sql
以包含以下内容(如果您还没有编辑器,请继续阅读,无论如何您很快就能完成):
/*
* numismatist.sql Beginner's database
*/
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
Create Table coins(
denomination TEXT,
value FLOAT,
comments TEXT
);
Insert into coins values(
'Quarter',
30.35,
'Gift from Grandpa'
);
COMMIT;
现在,保存此文件,然后为自己制作一个副本,以便在您希望创建另一个新数据库时使用,例如:
$ cp numismatist.sql skeleton.sql
$ chmod -w skeleton.sql
现在,每当您想要重新开始或创建自己的数据库时,您都会有一个简单的示例可供修改和扩展。 (或者,对于熟悉 make 的人来说,将其放在 new: 下的 make 文件中,然后让 make 完成工作。)
接下来,我们必须告诉 SQLite 使用我们刚刚创建的文件中的命令创建数据库。然后,我们将拥有一个真正的数据库。
$ cat numismatist.sql | sqlite3 numismatist.db
现在使用以下命令测试它是否有效:
$ sqlite3 numismatist.db 'select * from coins'
您应该看到与以下内容非常相似的内容:
Quarter|30.35|Gift from Grandpa
所有这些都可以从 SQLite 内部完成,例如,如果您没有编辑器,或者只是想直接在 SQLite 中工作以了解其命令行行为。只需输入以下内容:
$ sqlite3 numismatist.db
要获取帮助,请使用 man sqlite3
或在 sqlite>
提示符下键入 .help
。然后输入上述 numismatist.sql
文件中的命令。现在,输入:
sqlite> select * from coins;
再次,您应该看到:
Quarter|30.35|Gift from Grandpa
现在,我们有了一个数据库。让我们更仔细地看看它。 create table coin(...
命令创建了数据库的记录格式。
插入硬币值(...
实际上填充了一条记录。现在,您只需按<向上箭头>
并继续编辑和添加记录,直到您满意为止列出记录,select * from coin;
如果您忘记添加 ;
,那么您将得到一个 ...>
继续提示符。只需在那里键入 ;
即可终止命令。
如何使用数据库
现在我们有了最基本的构建块——数据库,我们可以探索随着数据库规模的增长会发生什么。数据库通常很大,不是吗?那么我们如何在数据库中输入无数行进行测试呢?没有人会这么做!很简单,方法如下(如果您使用 bash),只需使用此脚本:
#!/bin/bash
function my_insert() {
echo "insert into coins values('$1', $2, 'From Grandpa');"
}
i=1.25 # establish minimum coin value
for a in `seq 1 10000` ; do
new_val=`calc "$i+$RANDOM/1000"`
my_insert "Quarter-$a" $new_val >> big_add-list
printf "Processing %i\n" $a # modulo 100 == 0 would be better
done
现在,将新命令合并到现有数据库中:
$ cat big_add-list | sqlite3 numismatist.db
$ sqlite3 numismatist.db 'select * from coins'
Quarter|30.35|Gift from Grandpa
Quarter-1|126.11|From Grandpa
Quarter-2|193.31|From Grandpa
.
.
.
Quarter-9998|290.69|From Grandpa
Quarter-9999|211.44|From Grandpa
Quarter-10000|286.31|From Grandpa
现在你就得到了它。一个充满记录的大型数据库。我鼓励您进入并手动探索该数据库。您可以添加、删除和修改其任何记录,直到您满意地了解事情的工作原理为止。而且,如果您破坏了它,请尝试了解您做了什么破坏了它,然后尝试修复它,而不是仅仅废弃它并恢复备份。
这是一个宝贵的教训。现在,无论何时您希望向数据库添加记录,只需将所有插入命令放入一个文件中,然后通过管道将其传输到 SQLite。
SQLite 基础知识
但这并不是 SQLite 所能做的全部。您可以编写包含 SQLite 库的程序,以便您可以用它创建任何您想要的内容。如前所述,您可以使用 bash 或其他脚本来帮助创建广泛且相当复杂的数据库。您可以探索 select
命令以非常独特的方式查询数据库。这仅仅是个开始。
以下是您接下来在 SQLite 之旅中可能希望学习的一些内容。有很多,所以不要认为这是一个完整的列表:
C/C++程序接口
Python接口
SQLite浏览器
如果我不解释一些最常见的 SQLite 命令,那就是我的失职。首先,在 SQLite 命令本身中使用点命令,但请参阅联机帮助页和 .help 命令,因为它们会更完整:
sqlite> .help
.open clears out memory
.open FILE clears memory, then opens FILE
.dump converts resident database to TEXT
.exit, .quit terminates current session
.read FILE reads database named FILE
.read '|cmd' execute command 'cmd', then read its stream
.output ?FILE? send output to FILE; reset to STDOUT
.shell, .system execute an Operating System (shell) command
.save writes database to storage
.show display settings
.cd change directory
.lint identify possible schema errors
最后,以下是任何记录中可能包含的类型(列表并不详尽):
NULL 空或空值
INTEGER 1 到 8 字节整数
FLOAT 8 字节 IEEE 浮点数
TEXT UTF-8 文本字符串(当前 Linux 的默认值)
BLOB 数据逐字存储。示例:照片/jpeg、大文本、二进制
结论
在本 SQLite Linux 教程中,我们已经看到创建数据库是一项非常简单的任务。当与 SQLite 结合使用时,任何人都可以极大地简化数据库通常处理的任务。以下是一些供用户尝试的建议:
地址和电话簿
库存(硬币收藏等)
待办事项列表
存档文件:照片;信件;简历;文章,例如这篇文章
将整本书或法典分解为可搜索的数据库。 (这是作者第一次接触数据库时所承担的任务。事实上,同时有几个代码。)
我们希望您喜欢这篇文章。请随时发送您可能有的任何反馈。