PostgreSQLでテーブル作成時に制約をつける

テーブル作成の雛形

CREATE TABLE [IF NOT EXISTS] table_name (
    column_name data_type,
    column_name data_type
);

主キーの指定

シンプルなやつ

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 data_type PRIMARY KEY,
    column_2 data_type
);

もしくは最後に記述

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 data_type,
    column_2 data_type,
    PRIMARY KEY(column_1)
);

複数のカラムに対して主キーを指定したい場合は以下

CREATE TABLE table_name8 ( 
    column_1 varchar(255), 
    column_2 varchar(255), 
    PRIMARY KEY(column_1, column_2) 
);

デフォルト値

VARCHARのデフォルト値

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 VARCHAR(255) DEFAULT 'Hello',
    column_2 VARCHAR(255) DEFAULT 'default'
);

Integerのデフォルト値

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 INTEGER DEFAULT 1,
    column_2 INTEGER DEFAULT 2
);

TIMESTAMPのデフォルト値

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 TIMESTAMP DEFAULT '2022-01-14',
    column_2 TIMESTAMP DEFAULT '1998-07-05'
);

BOOLEANのデフォルト値

CREATE TABLE [IF NOT EXISTS] table_name (
    column_1 BOOLEAN DEFAULT 'TRUE',
    column_2 BOOLEAN DEFAULT 'FALSE'
);

外部キー制約

以下のuser_idに対する外部キー制約をつけていく場合を考えてみます。

CREATE TABLE IF NOT EXISTS users (
    user_id VARCHAR(255) PRIMARY KEY,
    password VARCHAR(255)
);

カラムに記述する

CREATE TABLE IF NOT EXISTS memo (
    user_id VARCHAR(255) REFERENCES users(user_id),
    memo VARCHAR(255) 
);

テーブルに設定することもできる

CREATE TABLE IF NOT EXISTS memo (
    user_id VARCHAR(255),
    memo VARCHAR(255),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

オススメ書籍

おすすめ書籍。こちらの書籍は2022/01/14時点でKindle Unlimited対象書籍ですのでこれを機に登録してみるのもいいかもしれません。Kindle Unlimitedは結構いろんなプログラミング学習に役立つ書籍が対象になっているのでおすすめです。

コメント

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