ホームページ >データベース >mysql チュートリアル >mysql で外部キーを作成してクエリする方法

mysql で外部キーを作成してクエリする方法

PHPz
PHPz転載
2023-05-30 21:55:303988ブラウズ

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 データをクエリすることを意味します。

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

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。