PostgreSQLでテーブルを作成する【CREATE TABLE】

SQL

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 NULLNULL値を持てない
NULLNULL値を持てる(デフォルト)
CHECK(expression)指定した条件に合う値のみ登録を許可する
DEFAULT default_exprデフォルト値を指定する
UNIQUE一意の値のみ持つ
PRIMARY KEYその列を主キーとする

上記は制約を列単位で指定していますが、表全体の制約として指定可能な制約もあります。
以下のように指定します。

制約(表)説明
UNIQUE (列1,列2,・・・列n)指定した複数の列が一意の値のみを持つ
PRIMARY KEY (列1,列2,・・・列n)指定した複数の列を主キーとする

「CREATE TABLE」の詳細については、公式ドキュメントを参照してください。

テーブルを新規作成してみる

例として以下のような列を持つテーブル「testtbl」を作成してみます。

列名制約
id6文字の可変長文字列 主キー、NULLは持てない
name20文字の可変長文字列NOT NULL
tel20文字の可変長文字列
email40文字の可変長文字列
score3桁の整数値

「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)
)
;

実行してみます。

CREATE TABLE 実行

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

CREATE TABLE 実行結果(テーブル詳細)

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

タイトルとURLをコピーしました