はじめに
SQL学習のステップ5へようこそ!ここでは、データベースの骨組みを作るための重要な操作、データ定義言語(DDL)について学びます。最初のトピックは CREATE TABLE
文です。これを使って、データを格納するための「表(テーブル)」を新しく作成する方法を見ていきましょう。テーブルはデータベースの基本単位なので、しっかり理解することが大切です。さあ、始めましょう!🚀
CREATE TABLE の基本構文
CREATE TABLE
文は、新しいテーブルを作成するためのSQLコマンドです。基本的な構文は以下のようになります。
CREATE TABLE テーブル名 (
カラム名1 データ型 制約,
カラム名2 データ型 制約,
...
カラム名N データ型 制約
);
各要素の意味は次の通りです。
- テーブル名: 作成するテーブルの名前を指定します。他のテーブルと重複しない、分かりやすい名前をつけましょう。
- カラム名: テーブルに含める列(カラム)の名前です。各カラムにどのようなデータを入れるかを示す名前が良いでしょう。
- データ型: 各カラムに格納できるデータの種類を指定します(例: 数値、文字列、日付など)。
- 制約: カラムに設定するルールです。例えば、「このカラムは空であってはいけない(
NOT NULL
)」といった制約があります。(他の制約については今後の記事で詳しく解説します)
CREATE TABLE
, INT
, VARCHAR
など)は大文字で書くことが多いですが、小文字でも動作します。テーブル名やカラム名は、慣習的にスネークケース(例: user_name
)がよく使われます。
カラム定義の詳細
テーブル作成の中核となるのがカラム定義です。各カラムについて、名前、データ型、そして必要に応じて制約を指定します。
1. カラム名
カラム名は、そのカラムに格納されるデータの意味を表す、ユニークで分かりやすい名前であるべきです。通常、英数字とアンダースコア(_)が使用できますが、データベース製品によっては利用可能な文字に制限がある場合があります。SQLの予約語(SELECT
, CREATE
など)はカラム名として使わないようにしましょう。
2. データ型
データ型は、カラムにどのような種類のデータを格納できるかを定義します。適切なデータ型を選ぶことで、データの整合性を保ち、ストレージ容量を効率的に使うことができます。代表的なデータ型には以下のようなものがあります。
カテゴリ | 代表的なデータ型 (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など)によって異なる場合があります。詳細は各データベースのドキュメントを確認してください。
3. 制約 (Constraint)
制約は、カラムやテーブルに設定するルールで、データの整合性を保つために非常に重要です。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値が入るのを防ぎます。
テーブル作成はデータベース設計の第一歩です。適切なカラム名とデータ型を選び、必要に応じて制約を設定することで、使いやすく信頼性の高いデータベースを構築できます。次回は、テーブルに設定する重要な制約である「主キー」と「外部キー」について詳しく見ていきましょう! 💪
コメント