Foreign Key là ràng buộc đảm bảo tính toàn vẹn tham chiếu giữa bảng con (child) và bảng cha (parent). Cột khóa ngoại trong bảng con tham chiếu đến khóa chính bảng cha.
Tạo bảng con (StudentEnrollment)
mysql> CREATE TABLE StudentEnrollment (
-> StudentId INT,
-> StudentName VARCHAR(200),
-> StudentFKPK INT
-> );
Query OK, 0 rows affected (0.91 sec)
Tạo bảng cha (College) - có PRIMARY KEY
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)
Thêm FOREIGN KEY bằng ALTER TABLE
ALTER TABLE TenBangCon ADD CONSTRAINT TenRangBuoc FOREIGN KEY (cot_khoa_ngoai) REFERENCES TenBangCha(cot_khoa_chinh);
mysql> ALTER TABLE StudentEnrollment
-> ADD CONSTRAINT StudCollegeConst
-> FOREIGN KEY (StudentFKPK) REFERENCES College(StudentFKPK);
Query OK, 0 rows affected (1.78 sec)
Kiểm tra ràng buộc
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)