Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cơ bản về Foreign Key (Khóa ngoại) trong MySQL?


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)