SQLite 与 Perl:初学者指南
你好,未来的数据库大师们!我很高兴能成为你们在这个激动人心的旅程中的向导,我们将一起探索 SQLite 和 Perl 的世界。作为一个教授计算机科学多年的老师,我可以告诉你,这种组合就像花生酱和果酱一样——美味至极!那么,让我们卷起袖子,开始吧!
安装
在我们开始创造数据库魔法之前,我们需要设置我们的工具。想象一下,这就像在烹饪一顿美食之前准备你的厨房。
- 首先,确保你的系统上安装了 Perl。你可以通过打开终端并输入以下命令来检查:
perl -v
如果看到了版本信息,那么你就准备好了!
- 接下来,我们需要安装 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";
让我们分解一下:
- 我们首先导入必要的模块。
- 我们指定驱动程序(SQLite)和数据库名称。
- 我们创建一个数据源名称(DSN)字符串。
- 我们使用
DBI->connect()
建立连接并将其存储在$dbh
中。 - 如果连接成功,我们打印一条成功消息。
创建表
现在我们已经进来了,让我们创建一个表来存储一些数据。想象一下,这就像在 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";
}
这里发生了什么:
- 我们定义了我们的 SQL 语句来创建一个名为 COMPANY 的表。
- 我们使用
$dbh->do()
执行该语句。 - 我们检查操作是否成功,并打印相应的消息。
插入操作
现在是向我们的表中添加数据的时候了。这就好比填写电子表格的行。
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";
在这段代码中:
- 我们创建了一个 SQL INSERT 语句。
- 我们使用
$dbh->do()
执行它。 - 如果成功,我们打印一条确认消息。
选择操作
现在,让我们检索我们的数据。这就好比从我们的电子表格中读取信息。
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";
}
这里的分解如下:
- 我们准备我们的 SELECT 语句使用
$dbh->prepare()
。 - 我们使用
$sth->execute()
执行该语句。 - 我们使用一个 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";
}
在这段代码中:
- 我们创建了一个 UPDATE SQL 语句。
- 我们使用
$dbh->do()
执行它。 - 我们检查影响了多少行,并打印结果。
删除操作
最后,让我们学习如何删除数据。这就好比从我们的电子表格中删除一行。
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 操作相同的模式:
- 我们创建了一个 DELETE SQL 语句。
- 我们使用
$dbh->do()
执行它。 - 我们检查影响了多少行,并打印结果。
就这样!你刚刚学习了使用 Perl 操作 SQLite 数据库的基础。记住,熟能生巧,所以不要害怕用这些例子做实验。在你意识到之前,你将能够轻松创建复杂的数据库应用程序!
Credits: Image by storyset