CREATE TABLE
PostgreSQLでデータベースに新しいテーブルを作成するには、SQLコマンドの「CREATE TABLE」を使用します。
「CREATE TABLE」コマンドの構文は以下のような感じになります。(全ての構文は長いため、抜粋してあります。)
CREATE TABLE テーブル名
(
列名1 データ型1 制約1,
列名2 データ型2 制約2,
・
・
列名n データ型n 列制約n,
表制約
) ;
列名・データ型・制約が1セットで列の情報を定義し、「,」で区切って複数の列を指定できます。
列名とデータ型は必須ですが、制約は必要に応じて設定します。
PostgreSQLの主なデータ型には以下のものがあります。
データ型 | 説明 |
---|---|
character varying [(n)] varchar [(n)] | [長さn文字の]可変長文字列 |
character [(n)] char [(n)] | [長さn文字の]固定長文字列 |
text | 可変長文字列 |
numeric [(p,s)] | 精度の指定可能な高精度数値 全体の桁数と小数部の桁数を指定可能 |
bigint int8 | 8バイト符号付整数 |
integer int int4 | 4バイト符号付整数 |
double precision float8 | 倍精度浮動小数(8バイト) |
real float4 | 単精度浮動小数(4バイト) |
date | 日付(年月日) |
time | 時刻 |
timestamp | 日付と時刻 |
bytea | バイナリデータ (「バイトの配列(byte array)」) |
列の制約については、主に以下のものがあります。
制約(列) | 説明 |
---|---|
NOT NULL | NULL値を持てない |
NULL | NULL値を持てる(デフォルト) |
CHECK(expression) | 指定した条件に合う値のみ登録を許可する |
DEFAULT default_expr | デフォルト値を指定する |
UNIQUE | 一意の値のみ持つ |
PRIMARY KEY | その列を主キーとする |
上記は制約を列単位で指定していますが、表全体の制約として指定可能な制約もあります。
以下のように指定します。
制約(表) | 説明 |
---|---|
UNIQUE (列1,列2,・・・列n) | 指定した複数の列が一意の値のみを持つ |
PRIMARY KEY (列1,列2,・・・列n) | 指定した複数の列を主キーとする |
テーブルを新規作成してみる
例として以下のような列を持つテーブル「testtbl」を作成してみます。
列名 | 型 | 制約 |
---|---|---|
id | 6文字の可変長文字列 | 主キー、NULLは持てない |
name | 20文字の可変長文字列 | NOT NULL |
tel | 20文字の可変長文字列 | |
40文字の可変長文字列 | ||
score | 3桁の整数値 |
「CREATE TABLE」コマンドは以下のようになります。
CREATE TABLE testtbl
(
id VARCHAR(6) NOT NULL,
name VARCHAR(20) NOT NULL,
tel VARCHAR(20),
email VARCHAR(40),
score NUMERIC(3,0),
CONSTRAINT pkey_testtbl PRIMARY KEY (id)
)
;
実行してみます。

「\d」メタコマンドで確認すると「testtbl」が作成されています。
SQLコマンドは「;」までが1つのコマンドです。psqlのプロンプトが「=>」から「->」「(>」などに代わっていますが、まだコマンドの入力が継続していることを表しており、「;」入力後に実行されています。
「\d testtbl」で詳細も確認してみます。

以上でテーブル作成の完了です。