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

MySQLの外部キーの基本?


外部キーは、テーブル間の整合性を維持するために使用できる制約の一種です。テーブルの外部キーを作成すると、このテーブルは子テーブルと呼ばれ、2番目のテーブルは親テーブルと呼ばれます。

親テーブルでは、外部キーが主キーとして機能します。テーブルを作成しましょう。

子テーブルを作成します。

mysql> create table StudentEnrollment
   -> (
   -> StudentId int,
   -> StudentName varchar(200),
   -> StudentFKPK int
   -> );
Query OK, 0 rows affected (0.91 sec)

親テーブルの作成

mysql> create table College
   -> (
   -> StudentFKPK int,
   -> CourseId int,
   -> CourseName varchar(200),
   -> CollegeName varchar(200),
   -> primary key(StudentFKPK)
   -> );
Query OK, 0 rows affected (0.46 sec)

親テーブルでは、列「StudentFKPK」が主キーです。 ALTERコマンドを使用して外部キーを追加します。

以下は、外部キーを追加するための構文です。

ALTER table yourChildTableName add constraint anyConstraintName
foreign key(primary key column name for parent table) 
references College(primary key column name for parent table);

以下は、以下のクエリでの上記の構文の実装です。

mysql> alter table StudentEnrollment add constraint StudCollegeConst foreign key(StudentFKPK) references College(StudentFKPK);
Query OK, 0 rows affected (1.78 sec)
Records: 0  Duplicates: 0  Warnings: 0

外部キー制約が存在するかどうかをチェックするための構文。

SELECT  TABLE_NAME, COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NA FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHER  REFERENCED_TABLE_NAME = 'yourParentTableName or your referencedTableName';

上記の構文は、以下のクエリで実装されています。

mysql> SELECT
   ->   TABLE_NAME,
   ->   COLUMN_NAME,
   ->   CONSTRAINT_NAME,
   ->   REFERENCED_TABLE_NAME,
   ->   REFERENCED_COLUMN_NAME
   ->   FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
   ->   WHERE
   ->   REFERENCED_TABLE_NAME = 'College';

これが出力です。

+-------------------+-------------+------------------+-----------------------+------------------------+
| TABLE_NAME        | COLUMN_NAME | CONSTRAINT_NAME  | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+-------------------+-------------+------------------+-----------------------+------------------------+
| StudentEnrollment | StudentFKPK | StudCollegeConst | College               | StudentFKPK            |
+-------------------+-------------+------------------+-----------------------+------------------------+
1 row in set, 2 warnings (0.03 sec)

StudentFKPKという名前の列があり、CONSTRAINT_NAMEはStudCollegeConstです。


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

    以下は構文です- alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecondTableNamePrimaryKey`) references yourFirstTableName(yourFirstTablePrimaryKeyColumnName); 上記の構文を理解するために、最初にテーブルを作成しましょう- mysql> create table demo65 −> ( −> id int not null primary

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

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