mysql-制約

基本コンセプト

  • 定義されている
    SQL規格では、ファッションのテーブルデータの追加条件にするために、データの一貫性と整合性を確保するために。制約は、テーブルレベルのために必須です。

  • 分類
    LIMITの制約データ

    • シングル制約:各制約は一つだけに結合されます。
    • 多列制約:名前が示すように、各制約は、データの複数の列を制約することができます。

    スコープによると、

    • 列レベルの制約は、唯一の定義された列を踏襲し、列に作用することができます。
    • 表レベルの制約は複数の列、個々の定義に作用することができます。

制約

1.非空制約

  • NOT NULL フィールドの規定は、現在の列がNULLでないことを保証すること、空にすることはできません。
  • それだけで、テーブルオブジェクトに作用することができます。
  • 非空制約を作成します。
CREATE TABLE emp(
	id INT(10) NOT NULL,
	Name VARCHAR(20) NOT NULL DEFAULT 'abc',
	sex CHAR NULL
)

制約の作成

  • 空でない制約の増加
ALTER TABLE emp
MODIFY sex VARCHAR(30) NOT NULL

ここに画像を挿入説明

  • null以外の制約の除去
ALTER TABLE emp
MODIFY sex VARCHAR(30) NULL

ここに画像を挿入説明

  • キャンセルが空制約はないが、デフォルト値を増やします
ALTER TABLE emp
MODIFY Name VARCHAR(15) DEFAULT 'ddx' NULL

ここに画像を挿入説明
2.唯一の制約

  • UNIQUE 唯一の制約は、フィールドの規定は、テーブル全体で一意です。
  • 同じテーブルに複数のユニーク制約を持つことができ、複数の列が制約された組み合わせであってもよいです。
  • あなたが同じカラム名とデフォルトの唯一の制約の名前を与えていない場合は、一意性制約を作成する場合。
  • ユニーク制約を作成します。
#创建表并指定用户名和密码组合不能重复
CREATE TABLE USER (
	id INT NOT NULL,
	NAME VARCHAR(25),
	PASSWORD VARCHAR(16),
	CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
)

ここに画像を挿入説明

  • 唯一の制約修正
ALTER TABLE USER
MODIFY NAME VARCHAR(20) UNIQUE

ここに画像を挿入説明

  • ユニーク制約を追加します
ALTER TABLE USER
ADD CONSTRAINT uk_name_pwd_1 UNIQUE(NAME,PASSWORD);
  • ユニーク制約をドロップ
#利用别名
ALTER TABLE USER
DROP INDEX uk_name_pwd_1

3.主キー制約

  • PRIMARY KEY 唯一の制約は、すなわち反復させた非ヌル制約を加えることに相当し、ヌル値が許可されていません。
  • 主キー制約の列の複数の組み合わせた場合は、列がNULLであることが許されない、合わせ重複値は許されません。
  • 各テーブルの主キーまで
  • 列の主キー制約のレベルモード
CREATE TABLE EMP1(
	id INT AUTO_INCREMENT PRIMARY KEY,
	NAME VARCHAR(20)
);

ここに画像を挿入説明

  • レベルモードテーブルの主キー制約
CREATE TABLE EMP2(
	id INT NOT NULL AUTO_INCREMENT,
	NAME VARCHAR(20),
	pwd VARCHAR(15),
	CONSTRAINT emp2_id_pk PRIMARY KEY(id)
);

ここに画像を挿入説明

  • 主キー制約を組み合わせモード
CREATE TABLE EMP3(
	id INT NOT NULL,
	NAME VARCHAR(20),
	pwd VARCHAR(15),
	CONSTRAINT emp3_pk PRIMARY KEY(NAME,pwd)
);

ここに画像を挿入説明

  • 主キー制約を削除します。
    削除する前に、
    ここに画像を挿入説明
ALTER TABLE emp5
drop PRIMARY KEY;

ここに画像を挿入説明

  • 主キー制約を追加します。
ALTER TABLE emp5
ADD PRIMARY KEY(NAME, pwd)

ここに画像を挿入説明

4.外部キー制約

  • FOREIGN KEY 外部キー制約は、二つのテーブルまたは間の参照整合性を確保します。
  • 外部キーは、テーブルの二つのフィールド又は二つのフィールドの2つのテーブル間の関係に基づいて構築されています。
  • 从表外部キーの値がなければなりません主表缶で見られるか、空であること。
  • ときに主表レコードがある从表時間基準、主表記録は削除されません。データを削除するには、削除する必要がある从表依存データの記録を。
  • カラム外部キー参照を参照すると、主キーまたは唯一の制約一意キー列であるプライマリ・テーブルに引用。
  • 同じテーブルには、複数の外部キー制約を持つことができます。
  • 外部キー制約を作成します。
#创建主表
CREATE TABLE dept(
	dept_id INT AUTO_INCREMENT PRIMARY KEY,
	dept_name VARCHAR(20)
);

#创建从表
CREATE TABLE emp(
	emp_id INT AUTO_INCREMENT PRIMARY KEY,
	last_name VARCHAR(15),
	dept_id INT,
	CONSTRAINT emp_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id)
); 

ここに画像を挿入説明

  • 複数列の外部キーの組み合わせ、使用、テーブルレベルの制約を作成します。
#创建主表
CREATE TABLE classes(
	id INT,
	NAME VARCHAR(20),
	number INT,
	PRIMARY KEY(NAME, number)
);

#创建从表
CREATE TABLE student(
	id int AUTO_INCREMENT PRIMARY KEY,
	classes_name VARCHAR(20),
	classes_number INT,
	FOREIGN KEY(classes_name, classes_number) REFERENCES classes(NAME, number)
)
  • 外部キー制約を削除します。
ALTER TABLE emp
DROP FOREIGN KEY emp_dept_id_fk;
  • 増加した外部キ​​ー制約
ALTER TABLE emp
ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept(dept_id);

外部キー制約のキーワード

  • FOREIGN KEY:サブテーブルは、テーブルレベルで列を指定しました。
  • REFERENCE:親テーブルの列に示されています。
  • ON DELETE CASCADE:カスケード削除、テーブル列の親が削除されると、列に対応する子テーブルが削除されます。
  • ON DELETE SET NULL:ブランキングカスケード:サブテーブル対応する列ブランク。
公開された32元の記事 ウォン称賛7 ビュー7581

おすすめ

転載: blog.csdn.net/Isaacddx/article/details/87649909