[SQLのはじめ方] Part16: CREATE TABLEとカラム定義

SQL

はじめに

SQL学習のステップ5へようこそ!ここでは、データベースの骨組みを作るための重要な操作、データ定義言語(DDL)について学びます。最初のトピックは CREATE TABLE 文です。これを使って、データを格納するための「表(テーブル)」を新しく作成する方法を見ていきましょう。テーブルはデータベースの基本単位なので、しっかり理解することが大切です。さあ、始めましょう!🚀

CREATE TABLE の基本構文

CREATE TABLE 文は、新しいテーブルを作成するためのSQLコマンドです。基本的な構文は以下のようになります。

CREATE TABLE テーブル名 (
  カラム名1 データ型 制約,
  カラム名2 データ型 制約,
  ...
  カラム名N データ型 制約
);

各要素の意味は次の通りです。

  • テーブル名: 作成するテーブルの名前を指定します。他のテーブルと重複しない、分かりやすい名前をつけましょう。
  • カラム名: テーブルに含める列(カラム)の名前です。各カラムにどのようなデータを入れるかを示す名前が良いでしょう。
  • データ型: 各カラムに格納できるデータの種類を指定します(例: 数値、文字列、日付など)。
  • 制約: カラムに設定するルールです。例えば、「このカラムは空であってはいけない(NOT NULL)」といった制約があります。(他の制約については今後の記事で詳しく解説します)
ポイント: SQLのキーワード(CREATE TABLE, INT, VARCHAR など)は大文字で書くことが多いですが、小文字でも動作します。テーブル名やカラム名は、慣習的にスネークケース(例: user_name)がよく使われます。

カラム定義の詳細

テーブル作成の中核となるのがカラム定義です。各カラムについて、名前、データ型、そして必要に応じて制約を指定します。

カラム名は、そのカラムに格納されるデータの意味を表す、ユニークで分かりやすい名前であるべきです。通常、英数字とアンダースコア(_)が使用できますが、データベース製品によっては利用可能な文字に制限がある場合があります。SQLの予約語(SELECT, CREATE など)はカラム名として使わないようにしましょう。

データ型は、カラムにどのような種類のデータを格納できるかを定義します。適切なデータ型を選ぶことで、データの整合性を保ち、ストレージ容量を効率的に使うことができます。代表的なデータ型には以下のようなものがあります。

カテゴリ 代表的なデータ型 (RDBMSによって名称が異なる場合があります) 説明 例 (MySQL / PostgreSQL)
数値型 整数型 整数値を格納します。サイズによって格納できる範囲が異なります。 INT / INTEGER, SMALLINT, BIGINT
固定小数点数型 正確な数値を格納します。通貨計算などに使われます。 DECIMAL(p, s) / NUMERIC(p, s) (p: 全桁数, s: 小数点以下の桁数)
浮動小数点数型 近似値を格納します。科学技術計算などに使われます。 FLOAT, DOUBLE / REAL, DOUBLE PRECISION
文字列型 固定長文字列 指定された長さの文字列を格納します。足りない場合は空白で埋められます。 CHAR(n)
可変長文字列 指定された最大長までの文字列を格納します。データ量に応じてストレージを使用します。 VARCHAR(n)
日付/時刻型 日付型 年月日を格納します。 DATE
時刻型 時分秒を格納します。 TIME
日時型 年月日と時分秒を格納します。 DATETIME / TIMESTAMP
その他 テキスト型 非常に長い文字列を格納します。 TEXT, LONGTEXT
バイナリ型 画像や音声などのバイナリデータを格納します。 BLOB, VARBINARY
真偽値型 真(True)または偽(False)の値を格納します。 BOOLEAN (MySQLではTINYINT(1)で代用), BOOL / BOOLEAN

注意: データ型の種類や名前、格納できるデータの範囲は、使用するデータベース管理システム(MySQL, PostgreSQL, SQL Server, Oracle, SQLiteなど)によって異なる場合があります。詳細は各データベースのドキュメントを確認してください。

制約は、カラムやテーブルに設定するルールで、データの整合性を保つために非常に重要です。CREATE TABLE 文のカラム定義でよく使われる制約の1つが NOT NULL です。

  • NOT NULL 制約: この制約が設定されたカラムには、NULL(値が存在しないことを示す特別な値)を格納することができません。つまり、データを挿入または更新する際には、必ず何らかの値を指定する必要があります。
CREATE TABLE products (
  product_id INT,
  product_name VARCHAR(100) NOT NULL, -- 商品名はNULLを許可しない
  price DECIMAL(10, 2)
);

この例では、product_name カラムに NOT NULL 制約が設定されているため、商品名を指定せずに商品データを登録することはできません。

主キー制約(PRIMARY KEY)、外部キー制約(FOREIGN KEY)、ユニーク制約(UNIQUE)、チェック制約(CHECK)など、他の重要な制約については、今後の記事で詳しく解説していきます。✅

実践例:簡単なテーブルを作成してみよう!

それでは、実際に簡単な「users」テーブルを作成してみましょう。このテーブルには、ユーザーID、ユーザー名、メールアドレス、登録日を格納します。

CREATE TABLE users (
  user_id INT,                  -- ユーザーID (整数型)
  user_name VARCHAR(50) NOT NULL, -- ユーザー名 (最大50文字の可変長文字列、NULL不可)
  email VARCHAR(100),           -- メールアドレス (最大100文字の可変長文字列)
  registration_date DATE        -- 登録日 (日付型)
);

このSQL文を実行すると、指定したカラムとデータ型を持つ `users` テーブルがデータベース内に作成されます。

💡 ヒント: テーブルが既に存在する場合にエラーを防ぐために、CREATE TABLE IF NOT EXISTS テーブル名 (...) という構文を使うこともできます。(データベース製品によってサポート状況が異なります)

まとめ

今回は、データベースに新しいテーブルを作成するための CREATE TABLE 文と、その中核となるカラム定義(カラム名、データ型、NOT NULL 制約)について学びました。

  • CREATE TABLE はテーブルの構造を定義するDDL文です。
  • カラム定義では、カラム名、データ型、制約を指定します。
  • データ型はカラムに格納できるデータの種類を決めます。
  • NOT NULL 制約は、カラムにNULL値が入るのを防ぎます。

テーブル作成はデータベース設計の第一歩です。適切なカラム名とデータ型を選び、必要に応じて制約を設定することで、使いやすく信頼性の高いデータベースを構築できます。次回は、テーブルに設定する重要な制約である「主キー」と「外部キー」について詳しく見ていきましょう! 💪

コメント

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