MySQLの制約
1.機能
制約は、データの整合性を確保するために従う必要があるルールとして定義されます。
制約はテーブルの作成中に作成することも、後で追加することもできます。
テーブルの作成後に制約を追加すると、既存のデータがチェックされて制約に違反しているかどうかが判断されます。
追加する制約が既存のデータに違反している場合、その制約は指定された列には適用されません。
2. 制約の種類
MySQL は、テーブル内の列に定義できる次の制約をサポートしています。
1) 主キー制約
2) 固有の制約
3) 外部キー制約
3. 主キー制約
値が含まれる列または列のセットの定義のみテーブル内のすべての行を識別します。
これらの列は主キー列と呼ばれます。
主キー列に NULL 値を含めることはできませんテーブル内の行を一意に識別するために使用されるためです。
文法:
CREATE TABLE table_name
(
<column definition 1>,
<column definition 2>,
............
<constraint_definition>);
<constraint_definition>=
[CONSTRAINT constraint_name] PRIMARY KEY (<column_name> [{
,
<column_name>}...]))
例:
emp1 という名前の新しいテーブルを作成します。列名は id、name、age、address です。id を主キーとして設定します。
create table emp1
(
id int,
name varchar(20),
age int,
address varchar(30),
Constraint Key_ID primary key(id)
);
または
create table emp1
(
id int primary key,
name varchar(20),
age int,
address varchar(30)
);
注: コードのバージョン 1 では、[Constraint Key_ID Primary key(id)] は ID 列を主キーとして設定するための標準コードです。Constraint は制約の固定形式です。Key_ID は設定された制約の名前です。自由に選択できます。主キーが唯一の制約です。キーワード、(id) は ID 列を一意になるように設定することを意味します
このボタンを使用すると、emp1 の ID がすでに主キーであり、キー マークがあることを確認できます。また、desc コマンドを使用して構造を表示することもできます。
4. 唯一の制約
のために使用される非主キー列に一意性を適用する=。
主キー制約に似ていますが、一意制約によって定義された列に適用されます。NULL値を許可する。
できるテーブルの上に複数の一意の制約を作成する。
文法:
CREATE TABLE table_name
(
<column_definition_1>,
<column_definition_2>,
.........
<constraint_definition>
<constraint_definition>=
[CONSTRAINT constraint_name] UNIQUE (<column_name>
[{
,
<column_name>}...]))
例:
テーブル emp2 を設計します。電話は一意であることがわかっているので、前と同様に電話番号列を追加します。ID を主キーとして設計し、電話を一意であるように設計します。
create table emp2
(
id int,
name varchar(20),
age int,
address varchar(30),
phone int,
Constraint Key_ID primary key(id),
Constraint Unique_Phone UNIQUE(phone)
);
または
create table emp2
(
id int Primary Key,
name varchar(20),
age int,
address varchar(30),
phone int UNIQUE
);
注: コード バージョン 1 では、[Constraint Unique_Phone UNIQUE(phone)] は電話列を一意に設定するコードです。Constraint は制約の固定形式です。Unique_Phone は設定された制約の名前です。これは選択できます。 UNIQUE は一意制約のキーワードです。 , (phone) は、phone 列を一意に設定することを意味します。
5. 外部キー制約(詳細は後述)
1 つのテーブルのデータが別のテーブルのデータに依存している場合、2 つのテーブルの不整合を解消します。
テーブル内の外部キーは、常に他のテーブルの主キー列を参照します。
別のテーブルで外部キーとして参照される主キーを含むテーブルは、主テーブルまたは被参照テーブルと呼ばれます。
他のテーブルの主キーを参照する外部キーを含むテーブルは、トランザクション テーブルまたは参照テーブルと呼ばれます。