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() | 從選擇語句中檢索一行數據 |
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()
來執行語句。 - 我們檢查操作是否成功並打印一個適當的消息。
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";
在這段代碼中:
- 我們創建了一個SQL INSERT語句。
- 我們使用
$dbh->do()
來執行它。 - 如果成功,我們打印一個確認消息。
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";
}
這裡的分解如下:
- 我們準備我們的SELECT語句使用
$dbh->prepare()
。 - 我們使用
$sth->execute()
來執行語句。 - 我們使用一個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";
}
在這段代碼中:
- 我們創建了一個UPDATE SQL語句。
- 我們使用
$dbh->do()
來執行它。 - 我們檢查影響了多少行並打印結果。
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操作相同的模式:
- 我們創建了一個DELETE SQL語句。
- 我們使用
$dbh->do()
來執行它。 - 我們檢查影響了多少行並打印結果。
就这样!你剛剛學會了使用Perl操作SQLite數據庫的基本知識。記住,熟能生巧,所以不要害怕試驗這些示例。在你還未意識到之前,你將能夠輕鬆地創建複雜的數據庫應用程序!
Credits: Image by storyset