Computer >> Máy Tính >  >> Lập trình >> MySQL

Khái niệm cơ bản về khóa ngoại trong MySQL?

Khóa ngoại là một loại ràng buộc có thể được sử dụng để duy trì tính toàn vẹn giữa các bảng. Nếu chúng ta tạo khóa ngoại cho một bảng, thì bảng này được gọi là bảng con trong khi bảng thứ hai sẽ được gọi là bảng mẹ.

Trong bảng cha, khóa ngoại sẽ hoạt động như một khóa chính. Hãy để chúng tôi tạo một bảng.

Tạo bảng con.

 mysql> tạo bảng StudentEnrollment -> (-> StudentId int, -> StudentName varchar (200), -> StudentFKPK int ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,91 giây) 

Tạo bảng mẹ

 mysql> tạo bảng College -> (-> StudentFKPK int, -> CourseId int, -> CourseName varchar (200), -> CollegeName varchar (200), -> khóa chính (StudentFKPK) ->); Truy vấn OK , 0 hàng bị ảnh hưởng (0,46 giây) 

Trong bảng cha, cột ‘StudentFKPK’ là một khóa chính. Chúng tôi sẽ sử dụng lệnh ALTER để thêm khóa ngoại.

Sau đây là cú pháp để thêm khóa ngoại.

 ALTER bảng yourChildTableName thêm ràng buộc khóa anyConstraintNameforeign (tên cột khóa chính cho bảng mẹ) tham chiếu College (tên cột khóa chính cho bảng mẹ); 

Sau đây là cách triển khai cú pháp trên trong truy vấn dưới đây.

 mysql> thay đổi bảng StudentEnrollment thêm ràng buộc khóa ngoại StudCollegeConst (StudentFKPK) tham chiếu đến trường Cao đẳng (StudentFKPK); Truy vấn OK, 0 hàng bị ảnh hưởng (1,78 giây) Bản ghi:0 Bản sao:0 Cảnh báo:0 

Cú pháp để kiểm tra xem có tồn tại ràng buộc khóa ngoại hay không.

 SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NA FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHER REFERENCED_TABLE_NAME ='yourParentTableName hoặc your referenceTableName'; 

Cú pháp trên được triển khai trong truy vấn dưới đây.

 mysql> SELECT -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLEpre> 

Đây là kết quả đầu ra.

 + ------------------- + ------------- + ------------ ------ + ----------------------- + ------------------- ----- + | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | + ------------------- + ------------- + ------------- ----- + ----------------------- + -------------------- ---- + | StudentEnrollment | StudentFKPK | StudCollegeConst | Cao đẳng | StudentFKPK | + ------------------- + ------------- + ------------- ----- + ----------------------- + -------------------- ---- Đã đặt + 1 hàng, 2 cảnh báo (0,03 giây) 

Chúng tôi có một cột tên là StudentFKPK và CONSTRAINT_NAME là StudCollegeConst.