このチュートリアルの動作環境: Windows 7 システム、MySQL 8 バージョン、Dell G3 コンピュータ。 MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約とともによく使用されます。関連付けられているリレーションシップを持つ 2 つのテーブルの場合、関連付けられているフィールドの主キーが配置されているテーブルがプライマリ テーブル (親テーブル) であり、外部キーが配置されているテーブルがセカンダリ テーブル (子テーブル) です。 外部キーは、プライマリ テーブルとセカンダリ テーブル間の関連付けを確立し、2 つのテーブルのデータを接続して、2 つのテーブルのデータの一貫性と整合性を制限するために使用されます。 外部キーを定義するときは、次の規則に従う必要があります。
MySQLのテーブルに外部キー制約を追加する 外部キー制約はテーブルを変更するときに追加できますが、外部キー制約を追加するための前提条件は、スレーブ テーブルの外部キー列のデータがマスター テーブルの主キー列のデータと一致しているか、データが存在しないことです。 データ テーブルを変更するときに外部キー制約を追加するための構文は次のとおりです。 ALTER TABLE <テーブル名> ADD CONSTRAINT <外部キー名> FOREIGN KEY(<列名>) REFERENCES <主テーブル名> (<列名>); 例 データテーブル tb_emp2 を変更し、フィールド deptId を外部キーとして設定し、データテーブル tb_dept1 の主キー ID に関連付けます。 mysql> テーブル tb_emp2 を変更します -> 制約 fk_tb_dept1 を追加 -> 外部キー(部門ID) -> 参照 tb_dept1(id); クエリは正常、影響を受けた行は 0 行 (1.38 秒) レコード: 0 重複: 0 警告: 0 mysql> SHOW CREATE TABLE tb_emp2\G ************************** 1. 行 **************************** テーブル: tb_emp2 テーブルの作成: CREATE TABLE `tb_emp2` ( `id` int(11) NULLではない、 `name` varchar(30) デフォルト NULL, `deptId` int(11) デフォルト NULL, `salary` float デフォルト NULL、 主キー (`id`)、 キー `fk_tb_dept1` (`deptId`)、 制約 `fk_tb_dept1` 外部キー (`deptId`) 参照 `tb_dept1` (`id`) ) エンジン=InnoDB デフォルト文字セット=gb2312 セット内1列(0.12秒) 注意: すでに作成されているデータ テーブルに外部キー制約を追加する場合は、外部キー制約が追加される列の値がすべて主キー列からのものであり、外部キー列が空であってはならないことを確認してください。 コンテンツ拡張子: 外部キー制約を使用する場合 正直に言うと、MySQL で InnoDB テーブルを使用する場合、必ずしも外部キー制約を使用する必要はありません。ただし、いくつかのケースでの外部キー制約の機能を説明するために、上記の例のコードを使用して詳しく説明します。これには、ブログ投稿を保存するためのものとコメントを保存するためのものの 2 つの MyISAM テーブルが含まれています。 データベース スキーマを定義するときに、コメント テーブルに外部キーを作成して各行 (コメント) を特定のブログ投稿にマッピングすることにより、これら 2 つのテーブル間に 1 対多の関係を確立します。サンプルの MyISAM テーブルを作成するための基本的な SQL コードは次のとおりです。 `test`.`blogs` が存在する場合はテーブルを削除します。 テーブル `test`.`blogs` を作成します ( `id` INT(10) 符号なしAUTO_INCREMENT、 `title` テキスト、 `content` テキスト、 `author` VARCHAR(45) デフォルト NULL, PRIROSE キー (`id`) )ENGINE=MyISAM デフォルト文字セット=utf8; `test`.`comments` が存在する場合はテーブルを削除します。 テーブル `test`.`comments` を作成します ( `id` INT(10) 符号なしAUTO_INCREMENT、 `blog_id` INT(10) UNSIGNED デフォルト NULL, `コメント` テキスト、 `author` VARCHAR(45) デフォルト NULL, PRIROSE キー (`id`) )ENGINE=MyISAM デフォルト文字セット=utf8; これで、MySQL に外部キー制約を追加する具体的な方法についての記事は終了です。MySQL に外部キー制約を追加する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント
>>: HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション
主要な Web サイトと個人的な習慣に従って、Docker ソースを追加するには次の方法を使用します...
とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければ...
目次TypeScript環境の構築ステップ1: Taobaoミラーをダウンロードするステップ2: T...
最近、goaccess を使って nginx ログを分析したいのですが、nginx ログの設定形式が...
独自のデモを作成するときに、display:flex を使用して垂直方向の中央揃えを実現したいと思い...
mysql countの詳細な説明count関数はテーブルや配列内のレコードを数えるために使われます...
シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...
目次序文基礎を築くプロトタイプコンストラクタのプロパティ__プロト__プロトタイプチェーン改善する要...
目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...
目次01 問題の説明02 ソリューション1. 他のスレーブライブラリを見つけてすぐに置き換える2. ...
目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...
XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...
ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...
目次1. サンプルコード2. 現象を通して本質を見抜く3. 実施原則4. 親コンポーネントのコンパイ...
フロントエンドエンジニアとして、IE は私たちにとって馴染み深いものであるはずです。設計案を実装する...