データ定義言語 (DDL) の紹介
DDL は Data Definition Language の略で、SQL (Structured Query Language) においてデータベースの全体的な設計を記述するためのコマンドセットです。DDL の主なコマンドは次のとおりです。
- CREATE: 新しいオブジェクトを作成するために使用します。
- ALTER: 既存のオブジェクトの構造を変更するために使用します。
- DROP: オブジェクトを削除するために使用します。
MySQL における CREATE、ALTER、DROP コマンドの使用
a. CREATE
CREATE コマンドは、新しいデータベース、新しいテーブル、または新しい ビュー を作成するために使用します。
- 例: CREATE DATABASE toko_buku;
- 説明: このコマンドは、toko_buku という名前の新しいデータベースを作成します。
b. ALTER
ALTER コマンドは、既に作成されたテーブルの構造を変更するために使用します。この操作では、カラムの追加、削除、変更、テーブルの修正、カラムへの新しい属性の付与を行うことができます。
- 例: ALTER TABLE buku ADD judul_buku varchar(20);
- 説明: このコマンドは、buku テーブルに、最大20文字の varchar 型の judul_buku という新しい フィールド (カラム) を追加します。
c. DROP
DROP コマンドは、データベースからオブジェクトを完全に削除します。オブジェクトは、データベース自体、テーブル、関数、インデックス、プロシージャ、トリガー、ビュー のいずれかです。
- 例: DROP DATABASE toko_buku;
- 説明: このコマンドは、toko_buku という名前のデータベースを削除します。
MySQL のデータ型
適切なデータ型の選択は、データベースストレージの効率にとって非常に重要です。以下は、MySQL のデータ型のカテゴリです。
A. 数値データ型
数値データを格納するために使用します。
- TINYINT: 整数 (正/負) を格納します。範囲: -128 ~ 127。サイズ: 1 バイト (8 ビット)。
- SMALLINT: 整数を格納します。範囲: -32768 ~ 32767。サイズ: 2 バイト (16 ビット)。
- MEDIUMINT: 整数を格納します。範囲: -8388608 ~ 8388607。サイズ: 3 バイト (24 ビット)。
- INT: 整数を格納します。範囲: -2147483648 ~ 2147483647。サイズ: 4 バイト (32 ビット)。
- BIGINT: 大規模な整数を格納します。範囲: -9223372036854775808 ~ 9223372036854775807。サイズ: 8 バイト (64 ビット)。
- FLOAT: 単精度浮動小数点数を格納します。サイズ: 4 バイト (32 ビット)。
- DOUBLE / REAL: 倍精度浮動小数点数を格納します。サイズ: 8 バイト (64 ビット)。
- DECIMAL / NUMERIC: 非常に高い精度の固定小数点数を格納します。サイズ: 8 バイト (64 ビット)。
B. 文字列データ型
文字またはテキストデータを格納するために使用します。
- CHAR: 固定長の文字列データを格納します (例: 商品ID、国民ID番号)。範囲: 0 ~ 255 文字。
- VARCHAR: 可変長の文字列データを格納します。範囲: 0 ~ 65,535 文字 (最新バージョン)。
- TINYTEXT: 短いテキストデータを格納します。範囲: 0 ~ 255 文字。
- TEXT: 標準的なテキストデータを格納します。範囲: 0 ~ 65,535 文字。
- MEDIUMTEXT: 中程度の長さのテキストデータを格納します。範囲: 0 ~ 16,777,215 文字。
- LONGTEXT: 非常に長いテキストデータを格納します。範囲: 0 ~ 4,294,967,295 文字。
C. 日付と時刻のデータ型
日付と時刻のデータを格納するために使用します。
- DATE: 日付を格納します (形式: YYYY-MM-DD)。範囲: ‘1000-01-01’ ~ ‘9999-12-31’。サイズ: 3 バイト。
- TIME: 時刻を格納します (形式: HH:MM:SS)。範囲: ‘-838:59:59’ ~ ‘+838:59:59’。サイズ: 3 バイト。
- DATETIME: 日付と時刻の組み合わせ (形式: YYYY-MM-DD HH:MM:SS)。範囲: ‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’。サイズ: 8 バイト。
- YEAR: 年を格納します (形式: YYYY)。範囲: 1900 ~ 2155。サイズ: 1 バイト。
D. BLOB データ型 (バイナリ)
BLOB は Binary Large Object の略です。純粋なバイナリデータを格納するために使用され、大文字と小文字が区別 され、画像、ドキュメント、音声などのマルチメディアファイルに最適です。
- BIT: バイナリデータを格納します。範囲: 64 桁のバイナリ。
- TINYBLOB: 最大サイズ 255 バイト。
- BLOB: 最大サイズ 65,535 バイト。
- MEDIUMBLOB: 最大サイズ 16,777,215 バイト。
- LONGBLOB: 最大サイズ 4,294,967,295 バイト。
SQL のキーの種類
SQL におけるキーは、テーブル内のデータ行を一意に区別したり、テーブル同士を関連付けたりするために使用される、1 つ以上の属性 (カラム) の組み合わせです。
- スーパーキー: テーブル内の各データ行を一意に識別できる属性の集合。
- 候補キー: 冗長な属性を持たない最小のスーパーキー。候補キーは、一意の値を識別できる最小の フィールド の組み合わせから選ばれます。
- 主キー: レコード の主要な識別子として選ばれた候補キー。主キーのデータは 空にできず (Not Null)、重複してはいけません。各テーブルに 1 つだけ主キーを持つことができます。
- 代替キー: 主キーとして 選ばれなかった 候補キー。
- 外部キー: テーブル同士を関連付け、親 と 子 の関係を形成するために使用されるキー。親テーブルの主キーは、関連する子テーブルの外部キーによって参照されます。
- 複合キー: エンティティを一意に識別するために、2 つ以上の属性で構成されるキー。通常、単一のカラムが主キーの条件を満たさない場合に使用されます。
MySQL の制約の種類
制約 は、データの整合性と妥当性を維持するために、カラムまたはテーブルに適用される制限ルールです。
- NOT NULL: レコード の挿入時にカラムを空のままにできないことを保証します。そのカラムには必ずデータを入力する必要があります。
- UNIQUE: カラム内のすべての値が互いに異なること (レコードの重複がないこと) を保証します。
- PRIMARY KEY: NOT NULL 制約と UNIQUE 制約の組み合わせ。テーブル内の各行を一意に識別します。1 つのテーブルに PRIMARY KEY は 1 つだけ許可されます。
- FOREIGN KEY: テーブル間の参照整合性を維持します。子 カラムの値が、親 カラム (別のテーブル) に有効な参照を持つことを保証します。
- CHECK: データがデータベースに保存される前に検証またはチェックを行います。データは boolean 値で評価され、条件を満たせば true となり保存されますが、false の場合は SQL が拒否し、エラー メッセージを表示します。






