Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490
pgAdmin4
pgAdmin4はPostgreSQLのデータベースやユーザーなどを管理するためのGUIツールです。
スタートメニューから「PostgreSQL 15」→「pgAdmin4」と選択することでpgAdmin4を起動できます。
pgAdmin4でサーバーを管理するには管理対象となるPostgreSQLサーバーへ接続するための設定を行います。
「Servers」を右クリックし、表示されたメニューから「作成」→「サーバー」を選択します。
日本語化
「File 」 → 「 Preferences 」 を選択する。
「 Miscellaneous 」 →「 User language 」 を選択する。
EnglishになっているのをJapaneseに変更してSaveします。
サーバー作成
- ホスト名
PostgreSQLサーバーが動いているマシンのホスト名またはIPアドレスを指定します。
データベース作成
データベース | pgadmin |
所有者 | postgres |
エンコーディング | UTF8 |
テンプレート | 指定しない |
テーブル空間 | 指定しない |
テーブル作成
pgadminデータベースを選択し、「スキーマ」→「public」とツリーを展開していきます。
「+」ボタンをクリックすると新しい列の情報を入力するための行が追加されます。
テーブルの列に制約を設定していきます。
名称の入力を省略すると主キーの名前は「テーブル名_pkey」になります
- price列
price列には0以下の数字が入らないように制約を設定します。
タブから「検査」を選択し、名称に「price_check_constraint」と入力し、「検査」に「price>0」と入力します。
データの格納
データを格納するには次の2通りの方法があります。
- SQL文を実行する。
- 「データの閲覧/編集」を使ってデータを登録する
データの閲覧/編集を使う場合はデータを登録するテーブルに主キーを設定するか、テーブル作成時に「OIDあり」をYesにしている必要があります。
いずれの条件も満たしていない場合は「データの閲覧/編集」を使ったデータの登録はできず、テーブルの内容の参照しかできません。
データの検索
「データの閲覧/編集」を使ってitemテーブルから何かデータを検索します。
検索条件を設定するには「データの閲覧/編集」→「フィルタリングした行の表示_」を選択します。
するとダイアログボックスが表示されます。
このように条件を指定してその条件を満たすデータのみを表示させることができます。
メンテナンス
VACUUM | 不要なデータ領域の削除 |
ANALYZE | 統計情報の更新 |
REINDEX | インデックスの再構築 |
CLUSTER | データの整列 |
pgAdminではPostgreSQLへログインできるロールとグループロールを管理することができます。
ロールとはユーザーとグループの概念をまとめたものでログイン権限やデータベース作成権限などを細かく設定できます。
バックアップ/リストア
データベースに何らかの障害が発生したときに元の状態に復旧できるよう、定期的にデータベースをバックアップしておく必要があります。
pgAdmin4ではサーバーやデータベース、テーブル単位でバックアップとリストアを実行できます。
リストア
バックアップしたファイルを選択し、オプションを指定することでデータを復元することができます。
SQL
PostgreSQLでSQLを実行するにはpsqlというSQLインタプリタプログラムを利用します。
psqlコマンドでデータベースに接続する簡単な方法は次のようになります。
psql データベース名 データベースユーザー名
PHPアプリケーション
C:\php-8.2.1の直下にある開発環境向けのひな型ファイル「php.ini-development」の名前を「php.ini」に変更します。
[変更前]
;extension_dir = "ext"
[変更後]
extension_dir = "C:\php-8.2.1\ext"
[変更前]
;extension=mbstring
;extension=openssl
;extension=pdo_pgsql
;extension=pgsql
[変更後]
extension=mbstring
extension=openssl
extension=pdo_pgsql
extension=pgsql
[変更前]
;date.timezone =
[変更後]
date.timezone = "Asia/Tokyo"
[変更前]
session.use_strict_mode = 0
[変更後]
session.use_strict_mode = 1
PHPからPostgreSQLへの接続をPDOというクラスを使用して実現しています。
PDOクラスでPostgreSQLへの接続をオープンにします。このときhost、port、dbname、user、passwordなどといったパラメータを文字列として指定します。接続が成功するとPDOオブジェクトを返します。
失敗するとPDOのエラーモードとしてPDO::ERRMODE_EXCEPTIONが設定されているので、例外が投げられ、様々なエラーメッセージが表示された後で処理が終了します。
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
$dbhに接続したデータベースに対してSQL文を発行し、結果をPDOStatementオブジェクトとして$sthに返します。「テーブルitemを対象にidの昇順で列id、name、priceの値を取得しなさい」という命令文です。
$sth= $dbh->query(
'SELECT id, name, price'.'FROM item'.'ORDER BY id'
)
foreach文では$rowsに格納されている配列を1行ずつ取り出して$rに設定
データが見つかった場合、fetchAllメソッドはすべての行を返しますが、ここでは一つ目の引数としてフェッチスタイルPDO::FETCH_ASSOCを指定しています。デフォルトはPDO::FETCH_BOTHでこれは結果セットに返された際のカラム名と0で始まるカラム番号でキーを付けた配列を返すのですが、今回はカラム名のみで返すPDO::FETCH_ASSOCを使う。
htmlspecialchars関数は引数として渡されたテキスト内のHTMLとして特殊な意味を持つ文字(<,>,”,&など)をブラウザが誤って解釈しない文字列(<,>,",&など)に変換する関数です。
number_format関数は数字を千位ごとにグループ化する関数です。
プリペアードステートメントは先にSQLを準備・パースさせておき、あとでパラメータの値を指定して実行する仕組み。
executeメソッドは引数をPostgreSQLのサーバーに送ります。
登録に成功した場合はheader関数を使って新しいURLへリダイレクトさせます。
header関数はブラウザにHTTPヘッダーを送信しますが「Location」というヘッダーを送信することでブラウザにそのURLへリダイレクトさせることができます。
rawurlencode関数はPHPの変数をGETなどのパラメータとして認識できる形式にエンコードしてくれる関数です。
JavaScriptのconfirmメソッドを使って確認のプロンプトを表示する。
<form action="do.php" method="post" onsubmit="return confirm('本当に削除しますか?');">
<input type="hidden" name="mode" value="del">
<input type="hidden" name="id" value="<?php echo htmlspecialchars($r['id'], ENT_QUOTES); ?>">
<input type="submit" value="削除">
</form>