MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのさまざまなテーブルに対して主キーを外部として参照するにはどうすればよいですか?


以下は構文です-

alter table yourSecondTableName
add constraint `yourConstraintName`
foreign key(`yourSecondTableNamePrimaryKey`)
references yourFirstTableName(yourFirstTablePrimaryKeyColumnName);

上記の構文を理解するために、最初にテーブルを作成しましょう-

mysql> create table demo65
−> (
−> id int not null primary key,
−> name varchar(20)
−> );
Query OK, 0 rows affected (0.57 sec)

以下は、2番目のテーブルを作成するためのクエリです-

mysql> create table demo66
−> (
−> user_id int not null primary key,
−> address varchar(200)
−> );
Query OK, 0 rows affected (1.80 sec)

以下は、主キーを外部キーとして参照するためのクエリです-

mysql> alter table demo66
−> add constraint `id_fk`
−> foreign key(`user_id`)
−> references demo65(id);
Query OK, 0 rows affected (3.76 sec)
Records: 0 Duplicates: 0 Warnings: 0

SHOW CREATE TABLEコマンドを使用して、テーブルの全体的な説明を確認してみましょう。以下はクエリです-

mysql> show create table demo66;

これにより、次の出力が生成されます-

+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| demo66 | CREATE TABLE `demo66` (
`user_id` int NOT NULL,
`address` varchar(200) DEFAULT NULL,
PRIMARY KEY (`user_id`),
CONSTRAINT `id_fk` FOREIGN KEY (`user_id`) REFERENCES `demo65` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

  1. 列がMySQLの主キーであるかどうかをどのように取得しますか?

    列が主キーであるかどうかを取得するには、COLUMN_NAMEおよびCOLUMN_KEY=PRIを使用します。これで、全体の構文は次のようになります- select column_name, case when column_key= 'PRI' then 'yourMessage1' else ''yourMessage2' end as anyAliasName from information_schema.columns where table_schema =database() and `table_name` = yourT

  2. MySQLでの外部キーの使用

    MySQLで外部キーを使用する方法を理解しましょう- InnoDBテーブルは、外部キー制約のチェックをサポートしています。 2つのテーブルを結合するためだけに、外部キー制約は必要ありません。 InnoDB以外のストレージエンジンで使用する必要のある列を定義するときに使用できます。 REFERENCES tableName(colName)は実際の効果はなく、現在定義されている列が別のテーブルの列を参照することを意図しているというユーザーへのコメントとして機能します。 MySQLは、「colName」が実際に「tableName」に存在すること、または「tableName」自体が実際に存在す