PostgreSQL - テーブル作成:初めてのガイド

こんにちは、未来のデータベース魔术師たち!今日は、PostgreSQLの世界に足を踏み入れ、特にテーブルの作成方法に焦点を当てます。コードを書いたことがない方も心配しないでください。私はあなたの親切なガイドとして、ステップバイステップで進めます。このチュートリアルの終わりには、プロのようにテーブルを作成できるようになります!

PostgreSQL - Create Table

PostgreSQLでのテーブルとは?

テーブルの作成に踏み込む前に、テーブルが実際に何かを理解しましょう。スプレッドシートを思い浮かべてください。行と列で構成されたグリッドですよね?データベースのテーブルも非常に似ています。関連するデータを行(レコード)と列(フィールド)に整理したコレクションです。

例えば、小さな図書館を運営している場合、「Books」というテーブルを作成し、「Title」、「Author」、「ISBN」、「Publication Date」という列を設定するかもしれません。このテーブルの各行は、図書館内の単一の本を表します。

CREATE TABLEの構文

それでは、PostgreSQLでのテーブル作成の基本構文を見てみましょう:

CREATE TABLE テーブル名 (
列1 データ型 制約,
列2 データ型 制約,
列3 データ型 制約,
....
);

心配しないでください!見たよりも簡単です。以下に分解します:

  1. CREATE TABLE:これはPostgreSQLに新しいテーブルを作成したいと伝えるコマンドです。
  2. テーブル名:これはあなたがテーブルを呼びたい名前です。
  3. 括弧内では、テーブル内にしたいすべての列をリストアップします。
  4. 各列に対して以下を指定します:
  • 列名
  • データ型(例:INTEGERは整数、TEXTは文字列など)
  • 制約(例:NOT NULLは列に値が必須)

例:テーブルを作成しましょう!

例1:シンプルなBooksテーブル

まずは簡単な例から始めましょう。架空の図書館用のテーブルを作成します:

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

以下に分解します:

  • book_id:各本のユニークな識別子。SERIALは自動的にインクリメントされます。
  • title:最大100文字で、空 cannot be empty(NOT NULL)。
  • author:最大50文字で、空 cannot be empty。
  • publication_date:任意(NOT NULLは指定されていません)。
  • isbn:各本のユニークな値。

例2:やや複雑なCustomersテーブル

次に、少し複雑な顧客用テーブルを作成します:

CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);

このテーブルでは新しい概念が導入されています:

  • DEFAULTregistration_dateにデフォルト値として今日の日付を設定します。
  • CHECKloyalty_pointsが負数にならないようにします。

PostgreSQLのデータ型

PostgreSQLはさまざまなデータ型を提供しています。以下に一般的なものをいくつか挙げます:

データ型 説明
INTEGER 整数 42
SERIAL 自動インクリメント整数 自動割り当て
VARCHAR(n) 最大n文字の可変長文字列 'Hello, World!'
TEXT 任意長の可変長文字列 '非常に長いテキスト...'
DATE 日付(時間なし) '2023-06-15'
TIMESTAMP 日付と時間 '2023-06-15 14:30:00'
BOOLEAN True/False値 TRUE or FALSE
NUMERIC(p,s) 精確な数(p桁、s小数点以下) 123.45

PostgreSQLの制約

制約は列に設定するルールです。以下に一般的なものをいくつか挙げます:

制約 説明
NOT NULL 列はnullを含むことができません
UNIQUE 列のすべての値は異なる必要があります
PRIMARY KEY テーブルの各行を一意に識別
FOREIGN KEY 2つのテーブル間の参照整合性を確保
CHECK 列のすべての値が特定の条件を満たす
DEFAULT 列のデフォルト値を設定

もっと詳しい例

例3:外部キーを持つテーブル

「customers」テーブルを参照する「orders」テーブルを作成します:

CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);

このテーブルには外部キー(customer_id)が含まれており、すべての注文が有効な顧客に関連付けられています。

例4:複合プライマリキーを持つテーブル

複数の列で構成されるプライマリキーが必要な場合もあります:

CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);

このテーブルは、複数の著者がいる本や、複数の本を書いた著者を扱うために使用されるかもしれません。

結論

おめでとうございます!あなたはPostgreSQLのテーブル作成の最初のステップを踏み出しました。練習は完璧を生みます。さまざまなシナリオでテーブルを作成してみてください。もしかしたら、音楽ライブラリやレシピブック、好きなビデオゲームのデータベースかもしれません。

実験を恐れず、間違えを犯してください。それが学びです!そして、いつも忘れないでください:データベースの世界では、CREATE、ALTER、そしてDROPの力を持っています。この力を賢く使ってください、若いパダワン!

ハッピーコーディング、そしてPostgreSQLがあなたと共にあります!

Credits: Image by storyset