CodeGym /コース /SQL SELF /テーブル作成の基本: CREATE TABLE

テーブル作成の基本: CREATE TABLE

SQL SELF
レベル 17 , レッスン 0
使用可能

最初のレクチャーでリレーショナルデータベースとPostgreSQLの基礎、psqlpgAdminの使い方、データベースの作成と管理をやったよね。じゃあ、いよいよリレーショナルDBの「建材」=テーブルを作っていこう。テーブルこそが、あとでフィルタしたりソートしたり結合したりできる情報を全部持ってるんだ。

PostgreSQLでテーブルを作るにはCREATE TABLEコマンドを使うよ。このコマンドでテーブルの構造(名前、カラム、データ型)を定義するんだ。

コマンドの基本構造

基本のシンタックスはこんな感じ:

CREATE TABLE テーブル (
    カラム1 データ型 constraints,
    カラム2 データ型 constraints,
    ...
);

パーツごとに見てみよう:

  • テーブル – テーブル名(例:students)。
  • カラム1 – カラム名(例:idname)。
  • データ型 – カラムのデータ型(例:INTEGERVARCHAR)。
  • constraints – データの制約(例:NOT NULLPRIMARY KEY)。

じゃあ、最初のテーブルを作ってみよう。

テーブル作成の例

シナリオ: 学習用DBに学生のデータを保存したい。そのためにstudentsテーブルを作るよ。フィールドは:

  • id: 学生のユニークID(自動で増える);
  • name: 学生の名前(最大100文字の文字列);
  • age: 学生の年齢(正の整数)。
CREATE TABLE students (
    id SERIAL PRIMARY KEY,  -- 学生のユニークID
    name VARCHAR(100),      -- 名前
    age INTEGER             -- 年齢
);

ここで何が起きてるか:

  1. id SERIAL PRIMARY KEY: idカラムが自動でユニークな数字(1, 2, 3...)を生成。しかもテーブルの主キーになる。
  2. name VARCHAR(100): テキストカラムで、VARCHAR(100)は最大100文字の文字列を意味する。
  3. age INTEGER: 年齢を保存する数値カラム。

このクエリをpsqlpgAdminで実行すれば、studentsテーブルができるよ。

カラムのデータ型

テーブルを作るときは、各カラムに合ったデータ型を選ぶのが大事。PostgreSQLにはいろんな型があるけど、まずはよく使うやつから。

データ型 説明 値の例
INTEGER 整数。年齢、数、IDなどにピッタリ。 1, 42, 100
VARCHAR(n) n文字までの文字列。長さ制限のあるテキストに最適。 'Alice', 'Bob'
TEXT 無制限の文字列。長文(例:商品の説明)に使う。 'Very long text...'
DATE 時間なしの日付。誕生日やイベントの日付に。 2023-10-12
BOOLEAN 論理型:TRUEFALSE。フラグ(例:完了/未完了)に使う。 TRUE, FALSE

データ型の選び方

  • 数字を保存するならINTEGER
  • 長さが決まってる文字列ならVARCHAR(n)
  • 制限なしのテキストならTEXT
  • 日付や時間はDATETIMESTAMP

例:coursesテーブルを作る

例えば、DBにコース情報も保存したいとしよう。各コースには:

  • id: ユニークID;
  • name: コース名(最大100文字の文字列);
  • description: コースの説明(長文);
  • start_date: コース開始日。

SQLコード:

CREATE TABLE courses (
    id SERIAL PRIMARY KEY,      -- コースのユニークID
    name VARCHAR(100),          -- コース名
    description TEXT,           -- 説明
    start_date DATE             -- 開始日
);

実践課題

今度は君の番!課題はこちら:

  1. teachersテーブルを作って、フィールドは:
    • id: ユニークID。
    • name: 先生の名前(最大50文字)。
    • subject: 担当科目(最大50文字)。
    • hire_date: 採用日。

実行用サンプルコード:

CREATE TABLE teachers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    subject VARCHAR(50),
    hire_date DATE
);

実行後、psql\d teachersコマンドを使って、テーブルができてるか確認してみて!

テーブル作成時によくあるミス

テーブル作り始めると、いろんなミスが出てくる。よくあるのは:

テーブル名やカラム名のミス。 PostgreSQLでは名前は大文字小文字区別しないけど、"で囲むときは注意。例えばCREATE TABLE "MyTable"だと"MyTable"ってテーブルができて、mytableは別物になる。

データ型の間違い。 存在しないデータ型を指定するとエラーになるよ。

CREATE TABLE example (
    column1 STRANGE_TYPE
);

このクエリは失敗する。なぜならSTRANGE_TYPEなんて型はないから。

PRIMARY KEYの付け忘れ。 主キーを忘れてもテーブルはできるけど、行の特定が面倒になるよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION