mysqlクエリの外部キー

WBOY
WBOYオリジナル
2023-05-14 10:09:072717ブラウズ

MySQL はリレーショナル データベース管理システムであり、外部キーはリレーショナル データベースの重要な概念の 1 つです。外部キーはテーブル間の関係を記述するために使用される制約であり、データの整合性と一貫性を保証できます。 MySQL での外部キーのクエリも非常に重要な操作です。この記事では、MySQL を使用して外部キーをクエリする方法を紹介します。

1. 外部キーとは

外部キーはテーブル内の 1 つ以上の列であり、この列の値がデータと一致する必要があることを指定するために使用されます。または、別のテーブルの主キーと一致します。この一致したテーブルを被参照テーブルと呼びます。リレーショナル データベースでは、2 つ以上のテーブルをリンクする場合に外部キーを使用できます。

外部キーの目的は、データの整合性と一貫性を確保することです。データの行をテーブルに追加するときに、このデータが別のテーブルのデータと一致する必要がある場合、一致関係が外部キーを通じて確立されている場合、MySQL は新しく追加されたデータの外部キーをチェックします。参照先のテーブルにデータが存在する場合は、データが存在しない場合は、テーブルへのデータの挿入を拒否します。

2. 外部キーの作成方法

MySQL で外部キーを作成する方法は数多くありますが、一般的な方法は次の 2 つです。

1. ALTER TABLE ステートメントを使用する

ALTER TABLE ステートメントを使用して外部キーを追加するための構文形式は次のとおりです:

ALTER TABLE テーブル名 ADD CONSTRAINT 外部キー名FOREIGN KEY (列名) REFERENCES 別のテーブルのテーブル名 (列名);

ここで、外部キー名は外部キーに与えられた名前です。この名前は一意である必要があり、列名は次のものを参照します。現在のテーブルの列名 別のテーブルの表示と列名は、それぞれ参照先のテーブル名と参照先のテーブルの列名です。

たとえば、外部キーを介してリンクされている従業員テーブル (従業員) と部門テーブル (部門) があるとします。次の SQL ステートメントを使用してこの外部キーを作成できます。

ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);

このステートメントは、dept_fk という名前の外部キーをemployees テーブル (employees) に追加することを意味します。dept_fk は、employees テーブルの dept_id 列を指します。この列は、Departments テーブルの dept_id 列を参照します。

2. テーブル作成時に外部キーを定義する

テーブル作成時に外部キーを定義するのも一般的な方法です。構文形式は次のとおりです。

CREATE TABLE 表名 (
列名 数据类型,
外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名)
);

たとえば、従業員テーブル (従業員) と部門テーブル (部門) を作成し、dept_id 列を従業員テーブルの外部キーとして使用して、dept_id をリンクするには部門テーブルの列には、次の SQL ステートメントを使用できます。

CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
dept_id INT,
PRIMARY KEY (id),
FOREIGN KEY (dept_id) REFERENCES departments (dept_id)
)

3. 外部キーをクエリする方法

MySQL で外部キーが確立されたら、MySQL クエリ ステートメントを使用して外部キーをクエリできます。外部キーをクエリする構文形式は次のとおりです:

SELECT * FROM 表名 WHERE 列名 IS NULL;

このステートメントは、テーブル内の空の列名を持つデータを返します。この列が外部キーとして定義されている場合、クエリ結果はテーブル内のデータになります。外部キーを使用した場合、一致するデータ行がありません。このクエリ結果は非常に便利で、手動で解決する必要があり、正しく一致しないレコードを見つけるのに役立ちます。

たとえば、Departments テーブルがあり、その dept_id 列が外部キーとして定義されています。Departments テーブルに一致しないレコードをクエリする場合は、次の SQL ステートメントを使用できます:

SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);

このステートメントは、employees テーブルに含まれていない、Departments テーブル内の dept_id データをクエリすることを意味します。

4. 概要

MySQL の外部キーのクエリは非常に重要な操作です。外部キーの定義とクエリを通じて、データベース内のデータの整合性と一貫性を確保し、不要なエラーを防ぎ、データの正確さと信頼性を高めることができます。 MySQL を使用する場合は、外部キーの制約による不要なエラーを避けるために、外部キーの定義とクエリに注意してください。

以上がmysqlクエリの外部キーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。