SQLite 与 Perl:初学者指南

你好,未来的数据库大师们!我很高兴能成为你们在这个激动人心的旅程中的向导,我们将一起探索 SQLite 和 Perl 的世界。作为一个教授计算机科学多年的老师,我可以告诉你,这种组合就像花生酱和果酱一样——美味至极!那么,让我们卷起袖子,开始吧!

SQLite - Perl

安装

在我们开始创造数据库魔法之前,我们需要设置我们的工具。想象一下,这就像在烹饪一顿美食之前准备你的厨房。

  1. 首先,确保你的系统上安装了 Perl。你可以通过打开终端并输入以下命令来检查:
perl -v

如果看到了版本信息,那么你就准备好了!

  1. 接下来,我们需要安装 DBI(数据库接口)模块和 SQLite 驱动。打开你的终端并输入:
cpan install DBI
cpan install DBD::SQLite

这可能需要几分钟的时间,所以你可以趁这个时间去喝杯咖啡。

DBI 接口 API

现在我们的原料已经准备好了,让我们来看看食谱书——DBI 接口 API。这是我们与 SQLite 数据库交互的函数。

下面是我们将要使用的一些最常见的 DBI 方法表格:

方法 描述
connect() 建立数据库连接
prepare() 为执行准备 SQL 语句
execute() 执行准备好的语句
fetch() 从 SELECT 语句检索一行数据
disconnect() 关闭数据库连接

如果现在这些看起来令人困惑,不用担心。我们将在接下来的学习中详细探讨每一个。

连接到数据库

让我们首先建立到我们的 SQLite 数据库的连接。这就好比敲敲门,礼貌地请求进入。

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";

my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;

print "成功打开数据库\n";

让我们分解一下:

  1. 我们首先导入必要的模块。
  2. 我们指定驱动程序(SQLite)和数据库名称。
  3. 我们创建一个数据源名称(DSN)字符串。
  4. 我们使用 DBI->connect() 建立连接并将其存储在 $dbh 中。
  5. 如果连接成功,我们打印一条成功消息。

创建表

现在我们已经进来了,让我们创建一个表来存储一些数据。想象一下,这就像在 Excel 中创建一个新的电子表格。

my $stmt = qq(CREATE TABLE COMPANY
(ID INT PRIMARY KEY     NOT NULL,
NAME           TEXT    NOT NULL,
AGE            INT     NOT NULL,
ADDRESS        CHAR(50),
SALARY         REAL););

my $rv = $dbh->do($stmt);
if($rv < 0) {
print $DBI::errstr;
} else {
print "表创建成功\n";
}

这里发生了什么:

  1. 我们定义了我们的 SQL 语句来创建一个名为 COMPANY 的表。
  2. 我们使用 $dbh->do() 执行该语句。
  3. 我们检查操作是否成功,并打印相应的消息。

插入操作

现在是向我们的表中添加数据的时候了。这就好比填写电子表格的行。

my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 ));

my $rv = $dbh->do($stmt) or die $DBI::errstr;
print "记录创建成功\n";

在这段代码中:

  1. 我们创建了一个 SQL INSERT 语句。
  2. 我们使用 $dbh->do() 执行它。
  3. 如果成功,我们打印一条确认消息。

选择操作

现在,让我们检索我们的数据。这就好比从我们的电子表格中读取信息。

my $stmt = qq(SELECT id, name, address, salary from COMPANY;);
my $sth = $dbh->prepare( $stmt );
my $rv = $sth->execute() or die $DBI::errstr;

if($rv < 0) {
print $DBI::errstr;
}

while(my @row = $sth->fetchrow_array()) {
print "ID = ". $row[0] . "\n";
print "NAME = ". $row[1] ."\n";
print "ADDRESS = ". $row[2] ."\n";
print "SALARY = ". $row[3] ."\n\n";
}

这里的分解如下:

  1. 我们准备我们的 SELECT 语句使用 $dbh->prepare()
  2. 我们使用 $sth->execute() 执行该语句。
  3. 我们使用一个 while 循环和 $sth->fetchrow_array() 来检索并打印每一行。

更新操作

有时我们需要更改我们的数据。这就好比在电子表格中编辑一个单元格。

my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;

if( $rv < 0 ) {
print $DBI::errstr;
} else {
print "更新的行总数 : $rv\n";
}

在这段代码中:

  1. 我们创建了一个 UPDATE SQL 语句。
  2. 我们使用 $dbh->do() 执行它。
  3. 我们检查影响了多少行,并打印结果。

删除操作

最后,让我们学习如何删除数据。这就好比从我们的电子表格中删除一行。

my $stmt = qq(DELETE from COMPANY where ID=2;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;

if( $rv < 0 ) {
print $DBI::errstr;
} else {
print "删除的行总数 : $rv\n";
}

这段代码遵循与我们 UPDATE 操作相同的模式:

  1. 我们创建了一个 DELETE SQL 语句。
  2. 我们使用 $dbh->do() 执行它。
  3. 我们检查影响了多少行,并打印结果。

就这样!你刚刚学习了使用 Perl 操作 SQLite 数据库的基础。记住,熟能生巧,所以不要害怕用这些例子做实验。在你意识到之前,你将能够轻松创建复杂的数据库应用程序!

Credits: Image by storyset