PostgreSQL テーブルを作成する
- 作成日 2022.11.29
- 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 | 全体の桁数を指定 |
REAL | 6桁精度 |
DOUBLE PRECISION | 15桁精度 |
SERIAL | 1から2147483647 |
BIGSERIAL | 1から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 NULL | NULLを許さない |
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から作成する場合は、対象のスキーマを右クリックして「テーブル」を選択します。
列のタブを選択して、テーブル名やカラム名、型を指定することで作成することが可能です。
-
前の記事
Dart Mapのkeyとvalueを全て取得する 2022.11.29
-
次の記事
phpList エラー「Error: please make sure that index.php is your default document for a directory」が発生した場合の対処法 2022.11.29
コメントを書く