PostgreSQL - Perl インターフェース:入門ガイド
こんにちは、未来のデータベース魔术師さんたち!PostgreSQLとPerlの世界に足を踏み入れるこのエキサイティングな旅に、あなた们的ガイドとして誇りに思います。コンピュータサイエンスを教えてきた者として、この組み合わせはピーナッツバターとジャムの様に、非常に上手くいくことをお約束します!それでは、腕をまくって潜りましょう!
インストール
データベースの魔法を始める前に、まずは我们的開発環境を整えます。心配しないでください、イケアの家具を組むよりも簡単です!
-
まず、システムにPostgreSQLがインストールされているか確認してください。インストールされていない場合は、公式のPostgreSQLウェブサイトにアクセスしてインストールガイドに従ってください。
-
次に、PerlのDBIモジュールとDBD::Pgドライバーをインストールする必要があります。ターミナルを開いて以下のコマンドを入力してください:
cpan install DBI DBD::Pg
Windowsの場合はppm
を使用する必要があるかもしれません。多くのテキストがスクロールして也表示されてもパニックに陥らないでください - それはあなたのコンピュータがただ動作しているだけです!
DBI インターフェース API
工具を用意したので、DBI(データベースインターフェース)APIについて話しましょう。これらはデータベースと通信するために知っておくべき秘密の握手のようなものです。
以下は、私たちが使用する最も一般的なDBIメソッドの表です:
メソッド | 説明 |
---|---|
connect() | データベースに接続 |
prepare() | SQL 文を準備 |
execute() | 準備された文を実行 |
fetch() | データの行を取得 |
finish() | ステートメントハンドルの使用を終了 |
disconnect() | データベースから切断 |
これがアルファベットスープのように見えるかもしれませんが、心配しないでください。以下の例でそれぞれのメソッドを使用し、お気に入りの絵文字のように熟悉していくでしょう!
データベースに接続
まず、データベースに「こんにちは」を送りましょう。以下のようにします:
use DBI;
my $dbname = "mydb";
my $host = "localhost";
my $port = "5432";
my $username = "postgres";
my $password = "password";
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$host;port=$port",
$username,
$password,
{ AutoCommit => 1, RaiseError => 1 });
print "データベースに接続成功しました!\n";
これを分解すると:
- 我们が先ほどインストールした
DBI
モジュールを使用しています。 - 接続の詳細(データベース名、ホスト、ポート、ユーザー名、パスワード)を設定しています。
-
connect()
メソッドで接続を確立しています。 -
AutoCommit => 1
は、私たちのデータベース操作が自動的にコミットされることを意味します。 -
RaiseError => 1
は、エラーが発生するとPerlが例外を举起することを意味します。
これを実行して「データベースに接続成功しました!」と表示されたら、自分に拍手を送ってください!
テーブルの作成
接続が完了したので、テーブルを作成しましょう。シンプルな図書館システムを構築していると仮定します:
my $sql = "CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(100) NOT NULL,
publication_year INTEGER
)";
$dbh->do($sql);
print "テーブル 'books' 作成成功!\n";
ここで起こっていることは:
- 我们がSQL文を定義し、名前が'books'のテーブルを作成しています。
-
do()
メソッドでSQL文を直接実行しています。 - エラーが発生しなければ、テーブルが作成されます!
INSERT 操作
図書館に本を追加しましょう:
my $sth = $dbh->prepare("INSERT INTO books (title, author, publication_year) VALUES (?, ?, ?)");
my @books = (
["银河英雄伝説", "道格拉斯・アダムズ", 1979],
["1984", "ジョージ・オーウェル", 1949],
["風と共に去りぬ", "ハーパー・リー", 1960]
);
foreach my $book (@books) {
$sth->execute(@$book);
}
print "本を追加成功!\n";
以下の通りです:
- 我们がプレースホルダー(
?
)を使用したSQL文を準備しています。 - 我们が追加したい本の配列を作成しています。
- 配列をループし、準備された文を実行しています。
-
execute()
メソッドは、プレースホルダーにデータを埋めます。
SELECT 操作
今度は本を取得しましょう:
$sth = $dbh->prepare("SELECT * FROM books");
$sth->execute();
while (my $row = $sth->fetchrow_hashref()) {
print "タイトル: $row->{title}, 著者: $row->{author}, 年: $row->{publication_year}\n";
}
ここで起こっていることは:
- 我们がSELECT文を準備し、実行しています。
- 我们がループを使用して
fetchrow_hashref()
で各行を取得しています。 - 各本の詳細を表示しています。
UPDATE 操作
あやまりました。「1984」は実際には1948年に出版されました。それを訂正しましょう:
$sth = $dbh->prepare("UPDATE books SET publication_year = ? WHERE title = ?");
$sth->execute(1948, "1984");
print "本を更新成功!\n";
以下の通りです:
- 我们がプレースホルダーを使用したUPDATE文を準備しています。
- 我们が正しい年と本のタイトルで実行しています。
DELETE 操作
最後に、データベースから本を削除しましょう:
$sth = $dbh->prepare("DELETE FROM books WHERE title = ?");
$sth->execute("银河英雄伝説");
print "本を削除成功!\n";
ここで起こっていることは:
- 我们がプレースホルダーを使用したDELETE文を準備しています。
- 我们が削除したい本のタイトルで実行しています。
以上で、PostgreSQLを使用してPerlでデータベースとやりとりする基本的なことを学びました。練習は完璧を生みますので、これらのコマンドを試してみてください。键盘が枕代わりになる前に、あなたもデータベースコードを寝ていて書けるようになるでしょう。
ハッピーコーディング、あなたのクエリがいつも期待通りの結果を返すことを祈っています!
Credits: Image by storyset