2.3. 新しいテーブルの作成

テーブル名と、テーブルの全ての列の名前と型を指定することで、新しいテーブルを作成することができます。

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- 最低気温
    temp_hi         int,           -- 最高気温
    prcp            real,          -- 降水量
    date            date
);

上のコマンドを複数の行に分けてpsqlに入力することができます。 psqlは、セミコロンで終わるまでそのコマンドは継続するものと認識します。

SQLコマンドでは空白文字(つまり空白、タブ、改行)を自由に使用することができます。 つまり、上で示したコマンドとは異なる形で入力することができることを意味します。 全てを1行で入力することさえできます。 連続した2つのハイフン("--")はコメントの始まりです。 その後に入力したものは、行末まで無視されます。 SQLはキーワードと識別子に対して大文字小文字を区別しません。 ただし、(上では行っていませんが)識別子が二重引用符で括られていた場合は大文字小文字を区別します。

varchar(80)は、80文字までの任意の文字列を格納できるデータ型を指定しています。 intは一般的な整数用の型です。 realは単精度浮動小数点数値を格納する型です。 date(日付)はその名前からわかるでしょう (わかると思いますが、date型の列はdateと名付けられています。 これはわかりやすいかもしれませんし、逆に混乱を招くかもしれません。 これは好みによります)。

PostgreSQLは標準SQLのデータ型、intsmallintrealdouble precisionchar(N)varchar(N)datetimetimestampintervalをサポートします。 また、一般的なユーティリティ用の型や高度な幾何データ型もサポートします。 任意の数のユーザ定義のデータ型を使用して、PostgreSQLをカスタマイズすることができます。 したがって、標準SQLにおける特殊な場合をサポートするために必要な場所を除き、型名は構文内でキーワードではありません。

以下に示す2番目の例では、都市とその地理的な位置情報を格納します。

CREATE TABLE cities (
    name            varchar(80),
    location        point
);

point型は、PostgreSQL独自のデータ型の一例です。

最後に、テーブルが不要になった場合や別のものに作り直したい場合、以下のコマンドを使用して削除できることを示します。

DROP TABLE tablename;