1. 制約の概要
1. 概念: 制約は、テーブル内のフィールドに作用して、テーブルに格納されるデータを制限するルールです。
2. 目的: データベース内のデータの正確性、有効性、完全性を保証するため。
3. 分類:
制約 | 説明する | キーワード |
---|---|---|
非NULL制約 | このフィールドのデータが null にならないように制限します | NULLではありません |
一意の制約 | このフィールド内のすべてのデータが一意であり、重複していないことを確認してください | 個性的 |
主キー制約 | 主キーはデータ行の一意の識別子であり、空ではなく一意である必要があります。 | 主キー |
デフォルトの制約 | データを保存するときに、このフィールドの値が指定されていない場合は、デフォルト値が使用されます。 | デフォルト |
チェック制約 (バージョン 8.0.1 以降) | フィールド値が特定の条件を満たしていることを確認する | チェック |
外部キー制約 | 2 つのグラフのデータ間の接続を確立し、データの一貫性と整合性を確保するために使用されます。 | 外部キー |
制約はテーブル内のフィールドに適用されます。制約はテーブルの作成/変更時に追加できます。
一般的な制約:
制限 | キーワード |
---|---|
主キー | 主キー |
自動拡張 | 自動増加 |
nullではない | NULLではありません |
のみ | 個性的 |
論理条件 | チェック |
デフォルト値 | デフォルト |
2. 拘束の場合
テーブル作成ステートメントは次のとおりです。
create table user(
id int 主キー auto_increment コメント '主键',
name varchar(10) not null 一意のコメント '姓名'、
age int check ( age > 0 && age <= 120 ) コメント '年龄'、
ステータス char(1) デフォルト '1' コメント 'ステータス',
性別 char(1) コメント '性別'
) コメント 'ユーザーテーブル;
3. 外部キー制約
概念:
外部キーは 2 つのテーブルのデータ間の接続を確立するために使用され、それによってデータの一貫性と整合性が保証されます。
場合:
従業員テーブル emp の dept_id (部門 ID) は、部門テーブル dept の ID に対応します。ここで、dept はメイン テーブルです。
alter table emp add constraint fk_emp_dept_id foreign key(dept_id) references dept(id);
4. まとめ
MySQL データベースは、データの整合性と一貫性を確保するために複数のタイプの制約を提供します。以下は、MySQL データベースの一般的な制約の一部です。
-
主キー: 主キーは、テーブル内の各行を一意に識別するために使用される列または列の組み合わせです。一意である必要があり、null 値は許可されません。
-
一意制約 (UNIQUE): 一意制約は、特定の列または列の組み合わせの値がテーブル内で一意であること、つまり重複値が許可されていないことを保証するために使用されます。主キーとは異なり、一意制約では NULL 値を許可できます。
-
外部キー制約 (FOREIGN KEY): 外部キーは、テーブル間の関係を確立するために使用されます。参照整合性を確保するために、別のテーブルを参照する主キーとして 1 つ以上の列を指定します。外部キー制約を使用すると、無効なデータの挿入を防ぐことができ、関連テーブルに対してカスケード操作を実行することもできます。
-
非 null 制約 (NOT NULL): 非 null 制約は、列に null 値を格納しないように制限するために使用されます。これにより、列には常に有効なデータが含まれる必要があります。
-
デフォルト制約 (DEFAULT): デフォルト制約は、値が明示的に指定されていない場合に列が自動的に使用するデフォルト値を定義するために使用されます。
-
チェック制約 (CHECK): チェック制約は、データの挿入または更新時に許可される値の範囲を決定する論理式を定義するために使用されます。式が false と評価された場合、挿入または更新操作は拒否されます。
これらの制約は、テーブルの作成時に定義することも、既存のテーブルで変更することもできます。これらは、データの整合性を維持し、より強力なデータ検証および保護メカニズムを提供するのに役立ちます。適切な制約を使用することで、データベース内のデータが期待どおりに動作することを保証し、エラーやデータの不整合のリスクを軽減できます。