この記事では、mysql に関する関連知識を提供します。主に外部キー制約の関連問題を整理しています。外部キー制約 (外部キー) は、データベース内の 2 つのデータ テーブル間にあります。このつながりは、実際のシナリオではまったく同じ意味を持つフィールドによって通常引き起こされます。一緒に見てみましょう。皆さんのお役に立てれば幸いです。
推奨学習: mysql ビデオ チュートリアル
外部キー制約 (外部キー) は、データベース内の 2 つのデータ テーブル間の列によって確立される関係です。この接続は通常、実際のシナリオでまったく同じ意味を持つフィールドによって引き起こされます。外部キー制約の導入により、MySQL はデータ テーブル内のデータの整合性を強化し、表示状況との一貫性を高めることができます。以下に、MySQL 外部キー制約の役割を説明する例を示します。
大学生の成績管理システムのデータベースを構築すると、学生の学籍番号、氏名、性別、学部などの情報を格納する「学生テーブル」と、学生の学籍番号、氏名、性別、学部などの情報を格納する「学生テーブル」の2つのテーブルが存在します。成績表 学籍番号、科目番号、試験の成績などの情報が格納されます。このようにして、学生番号を介して 2 つのテーブル間に外部キー制約が確立されます。成績証明書テーブルの学籍番号は、学生テーブルの学籍番号の有無に依存すると考えるのが自然であり、学生が卒業、中退して学生テーブルから削除されると、その学生に関連する学籍番号が学生テーブルに存在するかどうかに依存すると考えるのが自然です。成績表には成績表は必要ありません。外部キー関係を作成する前は、これら 2 つのテーブルは完全に独立して存在するため、スコア情報に関係なく、存在しない生徒の関連スコアをスコア テーブルに強制的に挿入したり、生徒テーブルの生徒を強制的に削除したりすることができます。スコアシートに存在するかどうか。ただし、外部キー関係を確立した後は、MySQL データベースによって上記 2 つの動作が制約され、データの挿入または削除のたびにデータの整合性がチェックされるため、実際の状況に合わせた操作が必要になります。
MySQL データベースに外部キーを作成するには、次の 4 つの条件を満たす必要があります。満たさない場合、MySQL データベースによって拒否されます。
1. 外部キーの作成に使用されるテーブルとカラムが存在する
2. 外部キーを構成するカラムが存在するインデックス
3. データ テーブルのエンジンは InnoDB として指定する必要があります
4. 外部キー フィールドと関連フィールドのデータ型は一貫している必要があります
データ テーブルの作成時に作成 外部キー制約の場合、create ステートメントの後に外部キー キーワードを使用してこのテーブルの外部キー フィールドを指定するだけです。データ テーブルの場合は、reference キーワードを使用して関連テーブルの関連フィールドを指定し、動作を明確に制限します。
外部キー制約を作成する SQL ステートメントの例は、次のとおりです。
create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB; create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on delete restrict on update cascade)ENGINE=InnoDB;
上記の SQL ステートメントで、on deletestrict は、削除時に外部キーによって削除操作が制限されることを示します。更新カスケードは名前を参照します。更新操作は更新時に同期されます。
同様に、MySQL はデータ テーブルの作成後の外部キー制約の追加もサポートしています。上の例では、最初に評定テーブルを削除し、次に評定テーブルを作成します。ここでは外部キーを作成しません。評定テーブルを作成した後に外部キーを追加してみてください。関連する SQL コマンドは次のとおりです:
drop table grade; create table grade(Sid int(8),Cid int(10),score int); alter table grade add index(Sid); alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;
実行結果は以下の通りです:
次に、外部キー制約の機能をテストしてみます。 、存在しないキーを成績テーブルに挿入しようとしました。学生の成績が拒否されたことが判明しました:
その後、学生テーブルに成績が存在する学生を削除しようとしました
その直後に、MySQL の外部キー制約カスケード更新関数をテストしたところ、student テーブルのデータが変更されると、成績テーブルも変更されることがわかりました。したがって、以下に示すようになります。
推奨学習: mysql ビデオ チュートリアル
以上がMySQL 外部キー制約の知識ポイントの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。