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

Làm cách nào để xem tất cả các khóa ngoại cho một cột trong bảng?

Để xem tất cả các khóa ngoại cho một bảng hoặc cột, lệnh reference_column_name được sử dụng.

Đầu tiên, hai bảng được tạo và sau đó liên kết với nhau với sự trợ giúp của ràng buộc khóa ngoại.

Tạo bảng đầu tiên -

 mysql> TẠO bảng ForeignTable-> (-> id int, -> name varchar (200), -> Fk_pk int->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,43 giây) 

Sau khi tạo bảng đầu tiên thành công, bảng thứ hai được tạo như sau -

 mysql> TẠO bảng primaryTable1-> (-> Fk_pk int, -> DeptName varchar (200), -> Khóa chính (Fk_pk) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,48 giây) 

Bây giờ, cả hai bảng đều có liên quan với nhau với sự trợ giúp của lệnh thay đổi và lệnh khóa ngoại lai cũng được thêm vào. Cú pháp cho điều này như sau -

 thay đổi bảng yourFirstTable thêm ràng buộc khóa ngoại anyConstraintName (column_name là khóa ngoại có trong bảng thứ hai) yourSecondTable (column_name hoạt động bảng bảo mật khóa chính). 

Cú pháp trên được áp dụng để liên kết cả hai bảng như sau -

 mysql> thay đổi bảng ForeignTable thêm ràng buộc khóa ngoại constFKPK (Fk_pk) referenceprimaryTable1 (Fk_pk); Truy vấn OK, 0 hàng bị ảnh hưởng (1,57 giây) Bản ghi:0 Bản sao:0 Cảnh báo:0 

Bây giờ, cú pháp để xem tất cả các khóa ngoại của một bảng được đưa ra như sau -

Đối với một bảng -

 SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE REFERENCED_TABLE_NAME ='yourReferencedTableName'; 

Bây giờ cú pháp trên được sử dụng để tạo truy vấn để xem tất cả các khóa ngoại. Truy vấn được đưa ra như sau -

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

Sau đây là kết quả -

 + -------------- + ------------- + ----------------- + ----------------------- + ------------------------ + | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | + -------------- + ------------- + ----------------- + ----------------------- + ------------------------ + | ngoại lai | Fk_pk | constFKPK | bảng chính1 | fk_pk | + -------------- + ------------- + ----------------- + ----------------------- + ------------------------ + 1 hàng trong bộ, 2 cảnh báo (0,02 giây) 

Trong đầu ra mẫu, tên_ ràng buộc là ‘constFKPK’ và tên_bảng là ‘ngoại lệ’. Đối với một cột -

 SELECTTABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_SCHEMA ='yourDatabaseName' ANDREFERENCED_TABLEUMNEN 

Truy vấn để hiển thị tất cả các khóa ngoại cho một cột được đưa ra bằng cú pháp trên. Truy vấn là asfollows -

 mysql> SELECT-> TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME-> FROM-> INFORMATION_SCHEMA.KEY_COLUMN_USAGE-> WHERE-> REFERENCED_TABLE_SCHEMA ='business' AND-> RE 

Kết quả thu được như sau:

 + -------------- + ------------- + ----------------- + ----------------------- + ------------------------ + | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | + -------------- + ------------- + ---------------- - + ----------------------- + ------------------------ + | ngoại lai | Fk_pk | constFKPK | bảng chính1 | fk_pk | + -------------- + ------------- + ----------------- + ----------------------- + ------------------------ + 1 hàng trong bộ, 2 cảnh báo (0,03 giây)