ホームページ >データベース >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 データをクエリすることを意味します。
以上がmysql で外部キーを作成してクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。