ホームページ >データベース >mysql チュートリアル >特定の列を参照する外部キーを持つテーブルを検索するにはどうすればよいですか?
特定の列を参照する外部キーを持つテーブルの検索
リレーショナル データベースでは、テーブルに他の列を参照する外部キーがあるのが一般的です。テーブルの主キー。これにより、エンティティ間の関係を確立し、強制することができます。ただし、特定の列を参照する外部キーを持つテーブルを特定するのは難しい場合があります。
この課題に対処するために、指定されたテーブルの列を参照する外部キーを持ち、実際の値が含まれるテーブルを識別する方法を説明します。
次のデータベース スキーマの例を考えてみましょう:
CREATE TABLE `X` ( `X_id` int NOT NULL auto_increment, `name` varchar(255) NOT NULL, PRIMARY KEY (`X_id`) ); CREATE TABLE `Y` ( `Y_id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `X_id` int DEFAULT NULL, PRIMARY KEY (`Y_id`), CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`) ); CREATE TABLE `Z` ( `Z_id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `X_id` int DEFAULT NULL, PRIMARY KEY (`Z_id`), CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`) );
このスキーマでは、両方のテーブルがY と Z にはテーブル X の X_id 列を参照する外部キーがあります。そのようなテーブルのリストを取得し、どのテーブルが外部キーに値を持っているかを特定するには:
SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'X' AND REFERENCED_COLUMN_NAME = 'X_id';
このクエリはすべてのテーブルに関する情報を返します。指定されたテーブルの列を参照する外部キーを持つもの。また、外部キーに少なくとも 1 つの関連付けられた値があることも保証されます。
結果を特定のデータベースにさらに絞り込むには、次の変更されたクエリを使用できます。
SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'X' AND REFERENCED_COLUMN_NAME = 'X_id' AND TABLE_SCHEMA = 'your_database_name';
ここでは、 your_database_name は、テーブルが存在する実際のデータベース名に置き換える必要があります。
以上が特定の列を参照する外部キーを持つテーブルを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。