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() 從選擇語句中檢索一行數據
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. 我們檢查操作是否成功並打印一個適當的消息。

INSERT操作

現在是時候將一些數據添加到我們的表中。這就像填寫我們工作表的行。

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. 如果成功,我們打印一個確認消息。

SELECT操作

現在,讓我們檢索我們的數據。這就像從我們的工作表中閱讀信息。

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()來檢索並打印每一行。

UPDATE操作

有時我們需要改變我們的數據。這就像在我們的工作表中編輯一個單元格。

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. 我們檢查影響了多少行並打印結果。

DELETE操作

最後,讓我們學習如何刪除數據。這就像從我們的工作表中刪除一行。

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