PostgreSQL - テーブル作成:初めてのガイド
こんにちは、未来のデータベース魔术師たち!今日は、PostgreSQLの世界に足を踏み入れ、特にテーブルの作成方法に焦点を当てます。コードを書いたことがない方も心配しないでください。私はあなたの親切なガイドとして、ステップバイステップで進めます。このチュートリアルの終わりには、プロのようにテーブルを作成できるようになります!
PostgreSQLでのテーブルとは?
テーブルの作成に踏み込む前に、テーブルが実際に何かを理解しましょう。スプレッドシートを思い浮かべてください。行と列で構成されたグリッドですよね?データベースのテーブルも非常に似ています。関連するデータを行(レコード)と列(フィールド)に整理したコレクションです。
例えば、小さな図書館を運営している場合、「Books」というテーブルを作成し、「Title」、「Author」、「ISBN」、「Publication Date」という列を設定するかもしれません。このテーブルの各行は、図書館内の単一の本を表します。
CREATE TABLEの構文
それでは、PostgreSQLでのテーブル作成の基本構文を見てみましょう:
CREATE TABLE テーブル名 (
列1 データ型 制約,
列2 データ型 制約,
列3 データ型 制約,
....
);
心配しないでください!見たよりも簡単です。以下に分解します:
-
CREATE TABLE
:これはPostgreSQLに新しいテーブルを作成したいと伝えるコマンドです。 -
テーブル名
:これはあなたがテーブルを呼びたい名前です。 - 括弧内では、テーブル内にしたいすべての列をリストアップします。
- 各列に対して以下を指定します:
- 列名
- データ型(例: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)
);
このテーブルでは新しい概念が導入されています:
-
DEFAULT
:registration_date
にデフォルト値として今日の日付を設定します。 -
CHECK
:loyalty_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