最終更新日:
公開日:
レシピ
データベース PostgreSQL
PostgreSQLデータベースでテーブルを作成する:CREATE TABLE
PostgreSQLデータベースへ新しくテーブルを作成する方法を、「PostgreSQL関数」と「PDO」の2通りのパターンで解説します。
この記事のポイント
- PostgreSQLのテーブル作成はPostgreSQL関数、PDOを使う2種類の方法がある
目次
新しいテーブルを作成
今回は接続したデータベースに、新しくテーブルを追加していきます。
PostgreSQLデータベースへの接続については、別記事「PostgreSQLデータベースへ接続」と同じ方法を使います。
今回は「カフェのメニュー」を題材にして、次のようなテーブルを作成していきます。
カラム名 | 型 | その他 |
---|---|---|
id | INT(11) | 主キー |
name | VARCHAR(20) | |
price | INT(11) | |
modify_datetime | DATETIME | |
create_datetime | DATETIME |
「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が出力されます。
ここからは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を使ったテーブルを作成する方法でした。