PHPプログラミング

最終更新日:
公開日:

レシピ

データベース PostgreSQL

PostgreSQLデータベースでテーブルを作成する:CREATE TABLE

PostgreSQLデータベースへ新しくテーブルを作成する方法を、「PostgreSQL関数」と「PDO」の2通りのパターンで解説します。

この記事のポイント

  • PostgreSQLのテーブル作成はPostgreSQL関数、PDOを使う2種類の方法がある

目次

新しいテーブルを作成

今回は接続したデータベースに、新しくテーブルを追加していきます。
PostgreSQLデータベースへの接続については、別記事「PostgreSQLデータベースへ接続」と同じ方法を使います。

今回は「カフェのメニュー」を題材にして、次のようなテーブルを作成していきます。

テーブル名:menu
カラム名その他
idINT(11)主キー
nameVARCHAR(20)
priceINT(11)
modify_datetimeDATETIME
create_datetimeDATETIME

id」はデータを管理するための一意となるID、「name」と「price」はメニュー名と価格、そして最後の2つはデータ更新日と登録日を示します。

テーブルを作成する方法はPostgreSQL関数を使った方法と、PDOを使う方法の2通りあります。
それぞれ順に確認していきましょう。

PostgreSQL関数でテーブルを作成する

様々な関数が用意されていて便利なPostgreSQL関数ですが、実はテーブル作成をするためだけの関数は用意されていません。
そこで、SQLクエリを実行するpg_query関数を使用してテーブルを作成します。

コード例

<?php
// 変数の初期化
$res = null;
$pg_conn = null;
$sql = null;

// データベースと接続
$pg_conn = pg_connect("host=localhost port=5432 dbname=test user=testuser password= testtest");

if( $pg_conn ) {

	// テーブル作成のためのSQL
	$sql = "CREATE TABLE menu (
	id int PRIMARY KEY,
	name varchar(50),
	price int,
	modify_datetime date,
	create_datetime date
)";

	// SQLクエリ実行
	$res = pg_query( $pg_conn, $sql);
	var_dump($res);

} else {
	var_dump("接続できませんでした");
}

// データベースの接続を切断
pg_close($pg_conn);

成功した場合は次のように出力され、失敗した場合はfalseが出力されます。

実行結果

resource(3, pgsql result)

この出力結果だけでは本当にテーブルが作成されたか分かりづらいため、PosgreSQLのコマンドを使って確認してみます。
WindowsのPowerShellやコマンドプロンプト(Macではターミナル)を起動し、下記のようにPostgreSQLの「psql データベース名」コマンドを実行してください。
赤い部分が入力するコードです。

コマンドの入力例

# psql test

続いて、テーブル一覧を出力します。
次の「\d」を入力して実行してください。

コマンドの入力例

test=# \d

きちんとテーブル「menu」が作成されていたら、次のように出力されます。

出力されたテーブル一覧

ここからはコードの解説に入っていきます。

まず、実行したSQL自体は通常のテーブル作成を行う指定です。
id」を主キーとし、必要な項目名と型を指定して作成しています。

SQLができたところで、pg_query関数で実際にテーブル作成のSQLを実行します。
その結果が上図の内容です。さらにテーブルの構造まで確認したい場合は、「\d テーブル名」コマンドを実行します。
今回の場合はテーブル名が「menu」なので、「\d menu」と入力します。

コマンドの入力例

test=# \d menu
コマンド実行結果

以上が、PostgreSQL関数を使ったテーブルを作成する方法でした。
pg_query関数についてもう少し詳しく知りたい場合は、php.netの下記のページを参照してください。
pg_query関数 – php.net

PDOでテーブルを作成する

続いて、PDOを使ったテーブル作成方法を見ていきます。

コード例

<?php
// 変数の初期化
$res = null;
$pdo_conn = null;
$sql = null;

try {
	// データベースと接続
	$pdo_conn = new PDO( 'pgsql:host=localhost; dbname=test;', 'testuser', 'testtest' );	

	// テーブル作成のためのSQL
	$sql = "CREATE TABLE menu (
	id int PRIMARY KEY,
	name varchar(50),
	price int,
	modify_datetime date,
	create_datetime date
)";
	// SQLクエリ実行
	$res = $pdo_conn->query( $sql);
	var_dump($res);

} catch(PDOException $e) {

	var_dump($e->getMessage());
}

// データベースの接続を切断
$pdo_conn = null;

成功した場合は次のように実行したSQL文が出力され、失敗した場合はfalseが出力されます。

var_dump関数で出力された結果

ここからはPDOを使ったコードの解説をしていきます。

最初にPDOオブジェクトを作成して$pdo_connへ格納し、queryメソッドでテーブル作成のSQL文を実行しています。
SQL文は先述の「PostgreSQL関数」で使ったものと全く同じ内容です。

作成されたテーブルを確認する方法も同じです。(上記「PostgreSQL関数でテーブルを作成する」を読まれた方はスキップしてください。)
WindowsのPowerShellやコマンドライン(Macの場合はターミナル)でPostgreSQLのコマンドから確認してみましょう。
まずは次のように入力してください。

コマンドの入力例

# psql test

続いてテーブル一覧を出力します。次の「\d」を実行してみてください。

コマンドの入力例

test=# \d
出力されたテーブル一覧

テーブル構造まで確認したい場合は、「\d テーブル名」を実行します。
今回作成したテーブルの名前は「menu」なので、「\d menu」と入力して実行してください。

コマンドの入力例

test=# \d menu

正常にテーブルが作成されていると、次のようなに出力されます。

コマンド実行結果

以上、PDOを使ったテーブルを作成する方法でした。