外部キーとは何ですか?
データベースでは、テーブルの列はフィールドまたはテーブルの属性と呼ばれます。たとえば、電子商取引 Web サイトのデータベースでは、ユーザーの携帯電話番号が「user」(ユーザー) という名前のテーブルに格納され、ユーザーの注文が「order」(注文) middle という名前の別のテーブルに格納されます。これら 2 つのテーブルの間には 1 対多の関係があります。つまり、1 人のユーザーが複数の注文を持つことができ、1 つの注文は 1 人のユーザーのみに属します。
外部キーはリレーショナル データベース用語で、2 つのテーブルを結合する制約です。外部キー制約により、別のテーブルのデータを参照するときに、他のテーブルの値と一致する値を使用してインスタンスを作成する必要があります。
外部キーの利点は、データ テーブル間の関係の整合性が保証されることです。これは、2 つのテーブル間に外部キー制約がある場合、主テーブルのレコードが削除または更新されると、それに依存するすべての外部キーが自動的に削除または更新されることを意味します。
外部キーを設定するにはどうすればよいですか?
外部キーを設定するには、使用している MySQL エンジンが外部キーをサポートしていることを確認する必要があります。現在、MySQL は MyISAM、InnoDB、NDB エンジンをサポートしています。このうち InnoDB は最も広く使用されているエンジンであり、外部キーをサポートする唯一の MySQL エンジンです。
外部キー制約を使用する場合は、テーブルが InnoDB エンジンを使用していることを確認してください。次のコマンドを実行して、テーブルのエンジン タイプを確認できます:
SHOW TABLE STATUS FROM database_name WHERE Name='table_name';
ここで、database_name
はデータベース名、table_name
はテーブルの名前です。エンジンの種類を確認したい。
テーブルで外部キー制約をサポートしないエンジンを使用している場合は、InnoDB エンジンに変更して次のコマンドを実行する必要があります。
ALTER TABLE table_name ENGINE=InnoDB;
次に、テーブルと外部キー制約を追加します。対応するコード例は次のとおりです。
CREATE TABLE order ( order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, date_added DATETIME, FOREIGN KEY (user_id) REFERENCES user(user_id) );
この例では、注文 ID (order_id)、ユーザー ID (user_id)、および日付 (date_added) フィールドを含む「order」(order) テーブルを作成します。 。次に、新しい注文を追加する前にユーザー ID が存在することを確認するために、「Orders」テーブルに外部キー制約を追加しました。
この制約式では、user_id
は現在のテーブルのフィールド名、user
は依存テーブルの名前、user_id
は依存テーブルのフィールド名。さらに、FOREIGN KEY
キーワードは外部キー制約を定義するために使用されます。
MySQL では、外部キー制約を CASCADE
、SET NULL
、または RESTRICT
として定義することもできます。これらのオプションの説明は次のとおりです。
CASCADE: 親が指定されている場合、子も削除または更新されます。
SET NULL: 親項目を指定すると、子項目の値が削除または Null に更新されます。
RESTRICT: 親が指定されている場合、子の削除または更新を禁止します。
以下は、CASCADE
、SET NULL
、および RESTRICT
を選択した完全なコード例です:
-- 创建父表 CREATE TABLE user ( user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); -- 创建子表,并定义外键约束 CREATE TABLE order ( order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, date_added DATETIME, FOREIGN KEY (user_id) REFERENCES user(user_id) ON DELETE CASCADE ON UPDATE SET NULL );
この例では、Orders テーブルに 2 つのオプションを追加しました。 ON DELETE CASCADE
オプションは、ユーザー レコードが削除されると、そのユーザーに関連付けられているすべての注文レコードも削除されることを示します。 ON UPDATE SET NULL
オプションは、ユーザー レコードを更新するときに、注文レコードのユーザー ID が Null 値に設定されることを示します。
外部キーを使用するにはどうすればよいですか?
データベース プログラミングでは、いくつかの基本的なコマンドを使用して、外部キーを含むテーブルをクエリできます。以下にサンプル コードを示します。
-- 查找所有订单 SELECT * FROM order; -- 查找用户John的所有订单 SELECT * FROM order WHERE user_id=(SELECT user_id FROM user WHERE username='John');
どちらの例でも、外部キー制約を含む "Orders" テーブルをクエリします。 2 番目の例では、ネストされたクエリを使用して、特定のユーザーの注文レコードをエクスポートしました。
変更操作を実行するときは、その変更が外部キー制約に違反していないことを確認してください。変更された値が外部キー制約を満たさない場合、エラーが発生します。この問題が発生した場合は、外部キー制約を満たすように適切なデータを変更します。以下に例を示します。
-- 修改订单,将John的所有订单修改为Jane的订单 UPDATE order SET user_id=(SELECT user_id FROM user WHERE username='Jane') WHERE user_id=(SELECT user_id FROM user WHERE username='John');
参考までに、「John」ユーザーに属するすべての注文を「Jane」ユーザーに属する注文に変更します。これを行う前に、ユーザー「Jane」がすでに存在していることを確認してください。
以上がmysqlで外部キーを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
