■テーブルへのデータの入力
テーブルへデータを入力するには、テーブルにレコードを順次追加する操作になります。レコードの追加には「INSERT INTO」文を使います。1回に1レコードのみ追加できます。
INSERT INTO テーブル名
(フィールド名1,フィールド名2,・・・,フィールド名n)
VALUES (値1 ,値2 ,・・・,値n);
最初のかっこ「(・・・)」の中に、レコードの中のデータを入力するフィールド名を[,」(半角カンマ)で区切って記入します。VALUES句のあとの「(・・・)」の中に、各フィールドに入力するデータを前のかっこに記入した順番と同じ順番で記入します。つまり、フィールド名1には値1が入力され、フィールド名2には値2が順次入力されます。テーブルのすべてのフィールドにデータを入力するときは、テーブル名の直後のかっこおよびフィールド名の記述は省略できます。ただし、値の記入順は、テーブルを作成したときのフィールドの記入順にあわせる必要があります。
また、値の記入位置には、変数を使うことも可能です。なお、値として直接文字列を記入する場合は、文字列を「'」(シングルクォーテーション)あるいは「"」(ダブルクォーテーション)で囲む必要があります。「"」(ダブルクォーテーション)で囲んだ場合は、文字列中にエスケープ記号などの特殊記号があると再評価されるので、注意が必要です。
サンプルファイル「insert01.php」を以下に示します。
「insert01.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>insert01.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// レコードを追加するテーブル名の設定
$tbl_name = "tbl_商品表";
// テーブルの中の全レコード一覧表示
show_records($db,$tbl_name);
print "<br>\n"; // レコード追加のSQL文の作成
$str_sql = "INSERT INTO {$tbl_name}
(商品コード,商品名 ,単価)
VALUES
('2001' ,'ランチ',800);";
// SQL文の実行
pg_query($db,$str_sql);
// SQL文の表示
print "SQL = \"" . $str_sql . "\"<br>\n";
// テーブルの中の全レコード一覧再表示
show_records($db,$tbl_name);
// データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

■テーブルのデータの修正
テーブルのデータを修正(更新)するには、SQLコマンドの「UPDATE」文を使います。
UPDATE テーブル名
SET フィールド名1= 値1,フィールド名2 = 値2,・・・,フィールド名n = 値n
WHERE 更新条件;
SET句で更新するフィールド名と更新後の値を「=」で結んで記述します。複数のフィールドを同時に更新する場合は、「,」(カンマ)で区切ります。すべてのレコードでなく条件にあったレコードのも更新する場合は、更新条件をWHERE句に記述します。
サンプルファイル「update.php」を以下に示します。
「update.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>update.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// レコードを追加するテーブル名の設定
$tbl_name = "tbl_商品表";
// テーブルの中の全レコード一覧表示
show_records($db,$tbl_name);
print "<br>\n";
// レコード更新のSQL文の作成
$str_sql = "UPDATE {$tbl_name}
SET 商品名 = '地方御膳',単価 = 900
WHERE 商品コード = '1001';";
// SQL文の実行
pg_query($db,$str_sql);
// SQL文の表示
print "SQL = \"" . $str_sql . "\"<br>\n";
// テーブルの中の全レコード一覧再表示
show_records($db,$tbl_name);
// データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

■テーブルのデータの削除
テーブルのデータを削除するには、SQLコマンドの「DELETE」文を使い該当するレコードを削除します。
DELETE FROM テーブル名
WHERE 削除条件;
ただ、このDELETE文は慎重に使う必要があります。一旦データを削除すると元へ戻らなくなります。条件式は慎重に確認しましょう。
サンプルファイル「delete.php」を以下に示します。
「delete.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>delete.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// レコードを削除するテーブル名の設定
$tbl_name = "tbl_商品表";
// テーブルの中の全レコード一覧表示
show_records($db,$tbl_name);
print "<br>\n";
// レコード削除のSQL文の作成
$str_sql = "DELETE FROM {$tbl_name}
WHERE 商品コード = '2001';";
// SQL文の実行
pg_query($db,$str_sql);
// SQL文の表示
print "SQL = \"" . $str_sql . "\"<br>\n";
// テーブルの中の全レコード一覧再表示
show_records($db,$tbl_name);
// データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

■テーブルのレコードの並べ替え(ソート)
あるフィールドの値に注目してレコードの表示順の並べ替え(ソート)を行うにはSQL文の「SELECT」文でORDER句を使います。
SELECT * FROM テーブル名
ORDER BY フィールド名
ORDER BYの後のフィールド名の値にしたがって昇順(辞書順あるいは小さい方から大きい方へ)に並べ替えます。
並べ替えを降順(辞書の逆順あるいは大きい方から小さい方へ)に並べ替えるときは、フィールド名の後に半角スペースをはさんで、「DESC]をオプションで記述します。
SELECT * FROM テーブル名
ORDER BY フィールド名 DESC
サンプルファイル「order.php」を以下に示します。
「order.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>order.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// レコードを並べ替えるテーブル名の設定
$tbl_name = "tbl_商品表2";
// テーブルの中の全レコード一覧表示
show_records($db,$tbl_name);
print "<br>\n";
// レコード並べ替え(昇順)のSQL文の作成
$str_sql = "SELECT * FROM {$tbl_name}
ORDER BY 単価;";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// SQL文の表示
print "SQL = \"" . $str_sql . "\"<br>\n";
// 結果リソースの中の全レコード一覧表示
show_rs($rs);
// 結果リソースの開放
pg_free_result($rs);
print "<br>\n";
// レコード並べ替え(降順)のSQL文の作成
$str_sql = "SELECT * FROM {$tbl_name}
ORDER BY 単価 DESC;";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// SQL文の表示
print "SQL = \"" . $str_sql . "\"<br>\n";
// 結果リソースの中の全レコード一覧再表示
show_rs($rs);
// データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

■LIKE演算子とワイルドカード文字「%」
WHERE句で、文字列の部分一致条件を使う場合は、LIKE演算子とワイルドカード文字「%」(半角)を使います。ワイルドカード文字「%」は0文字以上の任意の文字列を意味します。
末尾が「定食」となる商品名を含むいわゆる後方一致検索の場合は、「LIKE '%定食」のようにします'。
WHERE フィールド名 LIKE '%文字列'
ただし、フィールドの型が固定長の場合は、フィールドの値の後ろに空白文字が付加されているので、その空白文字をtrim()関数で削除した上で評価する必要があります。
WHERE trim(フィールド名) LIKE '%文字列'
前方一致検索の場合は、「LIKE '山%'」のようにします。
WHERE フィールド名 LIKE '文字列%'
部分一致検索の場合は、「LIKE '%幸%'」のようにします。
WHERE フィールド名 LIKE '%文字列%'
文字列に変数「$str」を使う場合は、変数を示す特殊文字「$」を再評価する必要があるので、「'」(シングルクォーテーション)の代わりに「"」(ダブルクォーテーション)で囲みます。変数は「{ }」で囲みます。
WHERE フィールド名 LIKE "'%{$str}%"
サンプルファイル「like.php」を以下に示します。
「like.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>like.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// 検索対象テーブル
$tbl_name = "tbl_商品表3";
show_records($db,$tbl_name);
print "<br>\n";
// あいまい検索(LIKE演算子)
// 後方一致検索
$str_sql = "SELECT * FROM {$tbl_name}
WHERE trim(商品名) LIKE '%定食';";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n";
// 前方一致検索
$str_sql = "SELECT * FROM {$tbl_name}
WHERE 商品名 LIKE '山%';";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n";
// 部分一致検索
$str = '幸';
$str_sql = "SELECT * FROM {$tbl_name}
WHERE 商品名 LIKE '%{$str}%';";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n"; // データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

■LIKE演算子とワイルドカード文字「_」
WHERE句で、特定の長さの文字列に一致する条件を指定する場合は、ワイルドカード文字「_」(半角のアンダーバー)を使います。冒頭が「鶴亀」で4文字の商品名を含むレコードを参照する場合は、「LIKE '鶴亀_
_'」とします。(「_ _」は2個連続した半角のアンダーバーの意味です。ここでは分かりやすいように、間に半角スペースを挿入していますが、SQL文では、半角スペースは入れません)。
WHERE フィールド名 LIKE '文字列_ _'
■IN演算子
WHERE句で、いくつかの特定の値に一致する場合の条件式には、IN演算子を使います。「1000」あるいは「1500」のいずれかに一致する場合という条件式は、「IN(1000,1500)」と記述します。
WHERE フィールド名 IN (候補値1, 候補値2,・・・,候補値n)
■BETWEEN演算子
下限値から上限値までの間の任意の値に一致する条件式は、BETWEEN演算子を使います。
WHERE フィールド名 BETWEEN 下限値 AND 上限値
以上のサンプルファイル「between.php」を以下に示します。
「between.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>between.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// 検索対象テーブル
$tbl_name = "tbl_商品表3";
show_records($db,$tbl_name);
print "<br>\n";
// あいまい検索(LIKE演算子)
// 文字列長を指定したい場合
// (鶴亀の後に任意の2文字を含む4文字の文字列を検索する例)
$str_sql = "SELECT * FROM {$tbl_name}
WHERE trim(商品名) LIKE '鶴亀__';";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n";
// IN演算子
$str_sql = "SELECT * FROM {$tbl_name}
WHERE 単価 IN(1000,1500);";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n";
// BETWEEN演算子
$str_sql = "SELECT * FROM {$tbl_name}
WHERE 単価 BETWEEN 2000 AND 2600;";
// SQL文の実行
$rs = pg_query($db,$str_sql);
// 結果セットの中の全レコード一覧表示
print "SQL = \"{$str_sql}\"<br>\n";
show_rs($rs);
print "<br>\n";
// データベースの切断
pg_close($db);
?>
</body>
</html>
サンプルファイルへのアクセス例を下記に示します。

|