PostgreSQL テーブルを作成する

PostgreSQL テーブルを作成する

PostgreSQLで、テーブルを作成する手順を記述してます。「create table」にテーブル名を指定することで可能です。「NULLを許さない」などの制約を指定することも可能です。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

テーブルを作成

テーブルを作成するには、「create table」を使用します。

create table [ IF NOT EXISTS ] テーブル名 (
  カラム名 データ型
)

指定できる主な型は、以下となります。

データ型説明
VARCHARサイズを指定できる可変長文字列
CHAR固定長文字列。不足分は空白
TEXT可変長文字列
INTEGER-2147483648 ~ +2147483647
SMALLINT-32768 ~ +32767
BIGINT-9223372036854775808 ~ +9223372036854775807
NUMERIC全体の桁数を指定
REAL6桁精度
DOUBLE PRECISION15桁精度
SERIAL1から2147483647
BIGSERIAL1から9223372036854775807
DATE日付
TIMESTAMP日付と時刻

実際に、テーブル「sample」を作成してみます。

CREATE TABLE sample
(id integer,
name text
);

実行結果をみると作成されていることが確認できます。

既に存在するテーブルを作成するとエラーとなります。

ERROR:  リレーション"sample"はすでに存在します
SQL 状態: 42P07

「IF NOT EXISTS」で存在を確認してから実行するとエラーにはなりません。

CREATE TABLE IF NOT EXISTS sample
(id integer,
name text
);

制約

また、テーブル作成時に「null」を禁止するなどの制約をカラムを設定することもできます。

CREATE TABLE テーブル名(
カラム名 データ型 制約,
カラム名 データ型 制約,
カラム名 データ型 制約,
);

指定できる主な制約は以下となります。

制約意味
PRIMARY KEY主キー
NOT NULLNULLを許さない
CHECK(条件)条件を指定
REFERENCES (列名)外部キー
UNIQUE列内で重複する値を許可しない
DEFAULTデフォルト値

また、リストで設定することも可能です。

制約意味
PRIMARY KEY(カラム1,カラム2….)主キーをリストで設定
UNIQUE(カラム1,カラム2….)重複を許さないカラムをリストで設定
FOREIGN KEY(カラム1,カラム2….)
REFERENCES 表名(カラム1,カラム2….)
条件を指定

実際に、制約を指定してテーブル「sample2」を作成してみます。

CREATE TABLE sample2(
	id integer not null, -- null 禁止
	name text unique, -- ユニーク
	age integer,
PRIMARY KEY(id)); -- idをプライマリに

実行結果

確認してみると、制約が設定されていることが確認できます。

SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE table_name = 'sample2'

実行結果

PgAdminから作成

PgAdminから作成する場合は、対象のスキーマを右クリックして「テーブル」を選択します。

列のタブを選択して、テーブル名やカラム名、型を指定することで作成することが可能です。