まず、6つの制約
- NOT NULLと空でありません
- PRIMARY KEY主キー
- UNIQUEユニーク
- CHECK制約をチェックし、MySQLがサポートしていない、構文エラーが、効果はなかったです
- FOREIGN KEY外部キー。2つの限界テーブルのリレーションシップ、正常値テーブルの外部キー制約から導入は、プライマリ・テーブル内の列の値の導入は、このフィールドの値は、列のテーブルに関連付けられたプライマリ・テーブルから導出されなければならないことを保証するために
- DEFAULTの既定値/設定値システム
第二に、テーブルレベルおよび列レベルの制約定義:
-
表レベルの制約:複数のデータ列の設立に関する制約と呼ばれるテーブルレベルの制約することができます列定義文の後にのみ、テーブルレベルの制約
-
列レベルの制約:データ列の設立に関する制約は、列レベルの制約列レベルの制約が列定義の中で宣言することができると呼ばれ、また、列定義後の文にすることができます
PS:単語は、列レベルの制約のために理解することが簡単であり、テーブル全体のための単一の行、テーブルレベルの制約であるため、当然の結果
制約で六カラムレベルの制約を使用することができるが、外部キーの影響は(外部キー制約は、2つのテーブル間の関係ではありません)
もちろん、デフォルトでは非空で、テーブルレベルの制約で使用することはできません
第三に、制約を追加するタイミング:
- あなたは、テーブルを作成する場合:
#メインテーブルを作成し、外部キー実験
CREATテーブルではないが、主要な存在する場合(
id INT、
major_nameのVARCHAR(20)
);
テーブル、テーブル・レベルの実験/列レベルの制約から作成#
CREATテーブルではないが(学生存在する場合
#テーブルレベルの制約を追加し、タイプの後に直接添加することができます
ID INT PRIMARY KEY、
student_name VARCHAR(20)、
セックスCHAR(1)、
年齢のINT DEFAULT 18、
majorid INT、
列の端が作成された後#は、テーブルレベルの制約を追加し、直接追加
CONSTRAINT PK PRIMARY KEY(ID)。#主キー、制約に名前を付けるために用いられる、ことなく適用することができます
CONSTRAINT fk_student_majory FOREIGN KEY(majorid)REFERENCESメジャー(ID)#外键
);
- ときに、テーブルを変更します。
#非空を追加し、他のカラムレベルの制約は、この方法に従うことができます
TABLEの学生が列student_name VARCHAR(20)NOT NULLを変更するALTER。
#外部キーを追加し、他のテーブル・レベルの制約は、同じ手順を使用して添加してもよいです
TABLEの学生が(ID)の主要なFOREIGN KEY(majorid)の参照を追加します。ALTER。