データ定義言語(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テーブルにjudul_bukuという名前の新しいフィールド(列)をデータ型varchar、最大文字数20で追加します。
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つ以上の属性(列)の組み合わせです。
- スーパーキー: テーブル内の各行を一意に識別できる属性のセット。
- 候補キー: 冗長な属性のない最小のスーパーキー。候補キーは、レコードを一意に識別できる最小のフィールドの組み合わせから選択されます。
- 主キー: レコードの主要な識別子として機能する選択された候補キー。主キーのデータはNULL(Not Null)にできず、一意でなければなりません。各テーブルは1つの主キーのみ持つことができます。
- 代替キー: 主キーとして_選択されなかった_候補キー。
- 外部キー: テーブル間を関連付けるために使用されるキーで、親子関係を形成します。親テーブルの主キーが、関連する子テーブルの外部キーによって参照されます。
- 複合キー: エンティティを一意に識別するために2つ以上の属性で構成されるキー。通常、単一の列が主キーとして適格でない場合に使用されます。
MySQLの制約の種類
_制約_は、データの整合性と有効性を維持するために列またはテーブルに適用されるルールです。
- NOT NULL: レコードを挿入する際に、列が空のままになるのを防ぎます。列にはデータが含まれている必要があります。
- UNIQUE: 列内のすべての値が異なる(重複レコードがない)ことを保証します。
- PRIMARY KEY:
NOT NULLとUNIQUE制約を組み合わせたものです。テーブル内の各行を一意に識別します。テーブルごとに1つのPRIMARY KEYのみ許可されます。 - FOREIGN KEY: テーブル間の参照整合性を維持します。子列の値が親列(別のテーブル)に有効な参照を持っていることを保証します。
- CHECK: データをデータベースに保存する前に検証します。データはブール条件に対して評価され、真の場合は保存され、偽の場合はSQLが拒否してエラーメッセージを表示します。
著者
Wilan
バリ・アイランド・テクノの常駐寄稿者であり、テクノロジー、プログラミング、ソフトウェアエンジニアリングの世界に関する知識を積極的に共有しています。