PHPスクリプトでMySQL一時テーブルを作成する方法をわかりやすく解説
mysql_query()関数で一時テーブルを作成できる
PHPには、MySQLのテーブルを作成するためのmysql_query()という関数が用意されています。実はこの関数は、通常のテーブルだけでなく、一時テーブル(TEMPORARY TABLE)の作成にもそのまま利用できます。ここでは、実際のコード例を使って手順を解説します。
サンプルコード:SalesSummaryテーブルの作成
以下の例では、PHPスクリプトを実行して「SalesSummary」という名前の一時テーブルを作成しています。
<html>
<head>
<title>Creating MySQL Temporary Tables</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = "CREATE TEMPORARY TABLE SalesSummary( ".
"Product_Name VARCHAR(50) NOT NULL, ".
"total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, ".
"avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, ".
"total_units_sold INT UNSIGNED NOT NULL DEFAULT 0 )";
mysql_select_db( 'TUTORIALS' );
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not create table: ' . mysql_error());
}
echo "Table created successfully\n";
mysql_close($conn);
?>
</body>
</html>
コードのポイント
このスクリプトでは、まずmysql_connect()でデータベースサーバーに接続し、接続に失敗した場合はエラーメッセージとともに処理を終了します。その後、SQL文としてCREATE TEMPORARY TABLEを組み立てています。
作成される「SalesSummary」テーブルは、商品名(Product_Name)、売上合計(total_sales)、平均単価(avg_unit_price)、販売数量合計(total_units_sold)の4つのカラムを持つ構造です。
一時テーブルの特徴
一時テーブルは、セッション単位で有効なテーブルです。作成した接続が切断されると自動的に削除されるため、集計結果の中間保存や一時的なデータ加工などに便利です。同じデータベース上に同名の通常テーブルが存在していても、セッション内では一時テーブルが優先されます。
注意点:mysql_*系関数は非推奨
なお、サンプルで使用しているmysql_query()などのmysql系関数は、PHP 5.5で非推奨となり、PHP 7以降では削除されています。現在の環境で動かす場合は、mysqli拡張モジュールやPDOを使うことをおすすめします。たとえばmysqliなら、mysqli_connect()で接続し、mysqli_query()で同じSQLを実行する形に置き換えるだけで、基本的な流れは変わりません。
-
CREATE TABLE文を個別に実行せず、SELECTステートメントだけでMySQLの一時テーブルを作成する方法
SELECTステートメントから一時テーブルを作成するにはSELECTステートメントを使って一時テーブル(Temporary Table)を作成するには、TEMPORARYキーワードを使用します。これにより、別途CREATE TABLE文を実行することなく、既存テーブルのデータをそのままコピーした一時テーブルを簡単に生成できます。この一時テーブルには次のような特徴があります。作成されたセッション内でのみ参照可能セッションが閉じられると自動的に破棄される異なる2つのセッションが同じ名前の一時テーブルをそれぞれ持つことができる準備:元となるテーブルを作成するまず、サンプル用の通常テーブルを作成します
-
MySQLストアドプロシージャで一時テーブル(TEMPORARY TABLE)を作成する方法
MySQLストアドプロシージャで一時テーブルを作成する基本構文MySQLのストアドプロシージャ内で一時テーブル(TEMPORARY TABLE)を作成する場合、基本となる構文は以下の通りです。CREATE PROCEDURE yourProcedureName() BEGIN CREATE TEMPORARY TABLE yourTemporaryTableName SELECT yourValue; ENDストアドプロシージャの作成例それでは、実際にこの構文を使って一時テーブルを作成し、テーブルにレコードを挿入してみましょう。まずは、一時テーブルを作成するストアドプロシージャを定義す