第 3 章 テーブルの制約

データベースのテーブルを設計する際には、テーブル内で制限する必要があり、条件を満たさないデータはテーブルに挿入できません。これが「制約」です。

1. 空の属性

1、ヌル

MySQL の Null は次のように表されます: NULL NULLNULL _ 私たちが C/C++ を学習していたとき、空の属性 NULL は数値 0 を表していました。しかし、MySQL では、NULL は値を表しません。NULL は何も意味せず、0 を表さず、スペースも表しません。MySQL では、データが空の場合は操作に参加できないため、データができる限り空にならないようにしてください (これについては後で説明します)。

2. 空の制約

一部のデータが空であることは論理的に不可能です。たとえば、学校で生徒の情報をカウントしたい場合、生徒には対応するクラスが必要です。つまり、クラス列のデータを空にすることはできません。したがって、このデータ属性に特定の制約を設定できます。つまり、クラスを空にすることはできません。制約の存在により、MySQL 内のデータの合法性が大幅に向上します。

では、空の制約を設定するにはどうすればよいでしょうか?

テーブルを作成するときは、not null対応する変数の後にテーブルを追加するだけです。
構文は次のとおりです。

变量名 数据类型 not null;

ここに画像の説明を挿入
たとえば、T テーブルを作成します。このテーブルには 2 つの変数があり、1 つはid idです。i d、1 つはname name名前e同時にnot null not\ null をnot o t null llという制約 

テーブルが作成されたら、T テーブルの説明を見てみましょう。
次の図に示すように、id に対応する NULL 空属性列は NO、つまり変数を空にすることができないことがわかりました。
ここに画像の説明を挿入

そこで、テーブルにデータを挿入します。

ここに画像の説明を挿入
データを挿入するときに、id カラムが書き込まれていないと、MySQL がエラーを報告し、それによって一定の制約効果が得られることがわかりました。

2、デフォルト値

1、デフォルト

デフォルト値: 特定の種類のデータには特定の値が指定されていることが多く、最初に指定できます。実際のデータが必要な場合、ユーザーはデフォルト値を選択して使用できます。

デフォルト値の効果: データが挿入されるとき、フィールドには値が割り当てられず、デフォルト値が使用されます。

2. 文法

数据名 数据类型 default 默认值

ここに画像の説明を挿入
T テーブルを作成します。このテーブルには、id、score、name の 3 つの変数があります。このうち、ID を空にすることはできず、スコアはデフォルトで 0 ポイントになります。

次に、このテーブルにデータを挿入します。
ここに画像の説明を挿入
スコアを挿入しない場合、MySQL はデフォルトでデフォルト値 0 を挿入することがわかりました。

3. 注記(列の説明)

1つのコメント

C/C++ では、コメントを表現するために\\使用されます。テーブルを作成するときに、プログラマが読みやすくするために、変数によってはコメントを追加する必要があります。その後、テーブルを作成するときに、コメントを使用してコメントを書くことができます。

2. 文法

数据名称 数据类型 comment '注释内容'

ここに画像の説明を挿入
テーブルを作成した後、テーブルの説明を確認できます。
ここに画像の説明を挿入
テーブルの作成時に追加されたコメントがテーブルにまったく表示されていないことがわかりました。

では、注釈を確認するにはどこに行けばよいのでしょうか?

次のステートメントを使用すると、テーブルを作成したステートメントを表示できます。

show create table 表的名称;

ここに画像の説明を挿入
この時点では、以前に追加されたコメントが表示されますが、形式がめちゃくちゃになっています。このとき、;のように書き換える\Gと、システムが印刷形式を調整してくれます。
以下の図に示すように:
ここに画像の説明を挿入
上の図は、T テーブルを作成したときに作成したステートメントであり、メモの内容が明確にわかります。

4、ゼロフィル

1. ゼロフィルとは

ゼロフィルとは何かを説明する前に、次の図に示すような現象について触れておく必要があります。上の図は特定のテーブルの説明です。
ここに画像の説明を挿入
を見てみましょう。この列では、後ろに数字 11 があります。 Typeint、varchar の後には 20 という数字もあります。この数値 20 は、明らかに、前に指定した文字列の最大長です。

では、int の後の数字は何を意味するのでしょうか?

実はこの11は最大長でもあります。次に、zerofill は未使用の上位ビットを 0 で埋めることですが、値自体のサイズには影響しません。

2. 文法

数据名称 数据类型 zerofill

ここに画像の説明を挿入

5、主キー

1、主キー

場合によっては、学生の学籍番号や個人の ID 番号など、一部のデータは 1 回だけ表示されます。学籍番号とID番号は人それぞれ異なります。したがって、主キーは 1 回だけ出現する変数を制約するために使用されます。

主キーによって制約された変数を繰り返したり、空にしたりすることはできません。

テーブルには主キーを 1 つだけ持つことができます。

2. 文法

数据名称 数据类型 primary key

たとえば、主キーによって変更された id 変数のみを使用するテーブル T を作成します。そしてテーブルにデータを挿入します。
ここに画像の説明を挿入
このテーブルには既にデータ 1 があります。そこに別の 1 を挿入して、正常に挿入できるかどうかを確認してみましょう。
ここに画像の説明を挿入
1 はすでに存在しているため、重複を避けるためにデータ 1 を再度挿入することはできないことがわかり、システムは保存を送信しました。

3. 主キーを変更する

変数が主キーを追加し忘れた場合は、テーブルの作成後に主キーを追加できます。構文は
次のとおりです。

alter table 表的名称 add primary key (变量名);

まず、主キーを変更せずに変数 T が 1 つだけ存在するテーブル T を作成します。
ここに画像の説明を挿入
次に、主キーを追加して id 変数を変更します。
ここに画像の説明を挿入
このテーブルの説明をもう一度見てみましょう。
ここに画像の説明を挿入

主キーはすでにキー列に表示されています。

主キーを追加するだけでなく、変数の主キーを削除することもできます。

alter table 表的名称 drop primary key;

ここに画像の説明を挿入

4. 複合主キー

テーブルを作成するとき、いくつかの変数を組み合わせて、主キーとして変数グループを形成できます。

構文は次のとおりです。

primary key(变量1,变量2,...)

T テーブルを作成します。このテーブルには 2 つの変数があり、1 つの変数は ID、もう 1 つの変数は名前です。ID + 名前の変数グループに主キーを追加します。
ここに画像の説明を挿入
次に、このテーブルにデータを挿入します。
以下の図に示すように、
ここに画像の説明を挿入
変数の 1 つが重複している場合でも挿入は可能ですが、変数グループ全体が重複している場合は挿入が失敗することがわかりました。

6. 自己成長

1、自動インクリメント

自己成長とは、その名の通り、自動的に成長することです。auto_increment を使用して変数を変更するときに、変数が割り当てられていない場合、MySQL は変数の最大値を見つけて、最大值+1それを変数に割り当てます。

auto_increment は主キーと同じであり、各テーブルは自動インクリメント変数を 1 つだけ持つことができます。変数を自己増加させるには、それがインデックスである (キー列に値がある) ことが前提となります。それ以外の場合、自動インクリメント フィールドは整数である必要があります。

2. 文法

数据名称 数据类型 键的类型 auto_increment

次の図に示すように、テーブル T を作成します。このテーブル T には 2 つの変数があり、1 つは id で、もう 1 つは name です。このうち、id変数を主キーで変更し、さらにidに自己増加属性を追加しています。
ここに画像の説明を挿入
次に、テーブルにデータを挿入します。
ここに画像の説明を挿入
最初に ID が 10 のデータを挿入し、次に ID のないデータを挿入します。しかし、最終的に、mysql は最初のデータの ID に基づいて 2 番目のデータの ID 値を推測しました。

7. 固有のキー

1、ユニークな

多くの場合、テーブル内には一意性が必要なフィールドが多数あり、データを繰り返すことはできませんが、テーブル内に存在できる主キーは 1 つだけです。一意のキーを使用すると、テーブル内の複数のフィールドが一意性を必要とする問題を解決できます。

一意キーの本質は主キーの本質と似ています。一意キーは空であっても、複数が空であってもかまいません。空のフィールドは一意性について比較されません。

2. 文法

数据名 数据类型 unique

ここで、id 変数が主キーで修飾され、name 変数が一意のキーで修飾されたテーブルを作成します。
ここに画像の説明を挿入

テーブルの説明は以下の通りで、キー値の列に2つのキー値の型が反映されていることが分かりました。
ここに画像の説明を挿入

8. 外部キー

1、外部キー

外部キーは、メイン テーブルとスレーブ テーブル間の関係を定義するために使用されます。外部キー制約は主にスレーブ テーブルで定義されマスター テーブルには主キー制約または一意制約が必要です外部キーを定義する場合、外部キー列のデータはメインテーブルの主キー列に存在するか、NULL である必要があります。

2. 文法

foreign key (变量名) references 主表(变量名)

たとえば、次の図に示すテーブルを作成したいとします。(右側のクラス テーブルがマスター テーブル、学生テーブルがスレーブ テーブルです)
まずはメインテーブルを作成しましょう
まずマスター テーブルを作成します: myclass

ここに画像の説明を挿入
メイン テーブルの説明は次のとおりです。
ここに画像の説明を挿入
次に、スレーブ テーブルを作成し、外部キー制約をスレーブ テーブルに追加します。
ここに画像の説明を挿入
それでは、まずメインテーブルにデータを挿入しましょう。
ここに画像の説明を挿入

次に、データをスレーブ テーブルに挿入します。

ここに画像の説明を挿入
挿入した class_id がメインテーブルに存在しないデータである場合、mysql はエラーを報告することがわかりました。

おすすめ

転載: blog.csdn.net/weixin_72060925/article/details/131806445
おすすめ