Bàn làm việc MySQL khóa ngoại

Khóa ngoại được sử dụng để liên kết một hoặc nhiều bảng với nhau. Nó còn được gọi là khóa tham chiếu. Khóa ngoại khớp với trường khóa chính của bảng khác. Nó có nghĩa là trường khóa ngoại trong một bảng đề cập đến trường khóa chính của bảng khác. Nó xác định duy nhất từng hàng của một bảng khác để duy trì tính toàn vẹn tham chiếu trong MySQL

Khóa ngoại cho phép tạo mối quan hệ cha-con với các bảng. Trong mối quan hệ này, bảng cha giữ các giá trị cột ban đầu và các giá trị cột của bảng con tham chiếu các giá trị cột cha. MySQL cho phép chúng ta định nghĩa ràng buộc khóa ngoài trên bảng con

MySQL xác định khóa ngoại theo hai cách

  1. Sử dụng câu lệnh CREATE TABLE
  2. Sử dụng câu lệnh ALTER TABLE

cú pháp

Sau đây là cú pháp cơ bản được sử dụng để xác định khóa ngoại bằng cách sử dụng câu lệnh CREATE TABLE OR ALTER TABLE trong MySQL

Trong cú pháp trên, chúng ta có thể thấy các tham số sau

constraint_name. Nó chỉ định tên của ràng buộc khóa ngoại. Nếu chúng tôi chưa cung cấp tên ràng buộc, MySQL sẽ tự động tạo tên của nó

col_name. Đó là tên của cột mà chúng ta sẽ tạo khóa ngoại

parent_tbl_name. Nó chỉ định tên của bảng cha, theo sau là tên cột tham chiếu đến các cột khóa ngoại

Reference_option. Nó được sử dụng để đảm bảo cách khóa ngoại duy trì tính toàn vẹn tham chiếu bằng cách sử dụng mệnh đề ON DELETE và ON UPDATE giữa bảng cha và bảng con

MySQL chứa năm tùy chọn tham chiếu khác nhau, được đưa ra dưới đây

THÁC. Nó được sử dụng khi chúng ta xóa hoặc cập nhật một hàng bất kỳ trong bảng cha, giá trị của các hàng phù hợp trong bảng con sẽ tự động được xóa hoặc cập nhật

ĐẶT NULL. Nó được sử dụng khi chúng ta xóa hoặc cập nhật bất kỳ hàng nào từ bảng cha, giá trị của các cột khóa ngoại trong bảng con được đặt thành NULL

HẠN CHẾ. Nó được sử dụng khi chúng ta xóa hoặc cập nhật bất kỳ hàng nào từ bảng cha có một hàng phù hợp trong bảng tham chiếu (con), MySQL không cho phép xóa hoặc cập nhật các hàng trong bảng cha

KHÔNG CÓ HÀNH ĐỘNG. Nó tương tự như GIỚI HẠN. Nhưng nó có một điểm khác biệt là nó kiểm tra tính toàn vẹn của tham chiếu sau khi cố gắng sửa đổi bảng

ĐẶT MẶC ĐỊNH. Trình phân tích cú pháp MySQL nhận ra hành động này. Tuy nhiên, cả bảng InnoDB và NDB đều từ chối hành động này

GHI CHÚ. MySQL chủ yếu cung cấp hỗ trợ đầy đủ cho các hành động CASCADE, RESTRICT và SET NULL. Nếu chúng tôi chưa chỉ định mệnh đề BẬT XÓA và BẬT CẬP NHẬT, MySQL sẽ thực hiện hành động mặc định GIỚI HẠN

Ví dụ khóa ngoại

Hãy cho chúng tôi hiểu cách khóa ngoại hoạt động trong MySQL. Vì vậy, trước tiên, chúng ta sẽ tạo một cơ sở dữ liệu có tên "mysqltestdb" và bắt đầu sử dụng nó bằng lệnh bên dưới

Tiếp theo, chúng ta cần tạo hai bảng có tên là "customer" và "contact" bằng cách sử dụng câu lệnh bên dưới

Bàn. khách hàng

Bàn. tiếp xúc

Xác minh cấu trúc bảng

Ở đây, chúng ta sẽ xem cấu trúc cơ sở dữ liệu của chúng ta trông như thế nào bằng cách sử dụng các truy vấn sau

Ta sẽ được cấu trúc như bên dưới

Bàn làm việc MySQL khóa ngoại

Trong đầu ra ở trên, chúng ta có thể thấy rằng PRI trong cột khóa của bảng khách hàng cho biết rằng trường này là giá trị chỉ mục chính. Tiếp theo, MUL trong cột khóa của giá trị liên hệ cho biết rằng trường Customer_Id có thể lưu trữ nhiều hàng có cùng giá trị

Chèn dữ liệu vào bảng

Bây giờ, chúng ta phải chèn các bản ghi vào cả hai bảng. Thực hiện câu lệnh này để chèn dữ liệu vào bảng khách hàng

Sau khi chèn thực hiện lệnh SELECT TABLE để kiểm tra dữ liệu bảng khách hàng như bên dưới

Bàn làm việc MySQL khóa ngoại

Thực hiện câu lệnh chèn bên dưới để thêm dữ liệu vào bảng liên hệ

Bảng liên hệ của chúng tôi trông giống như dưới đây

Bàn làm việc MySQL khóa ngoại

Bây giờ, hãy xem khóa ngoại trong MySQL bảo toàn tính toàn vẹn của dữ liệu như thế nào

Vì vậy, ở đây, chúng tôi sẽ xóa dữ liệu tham chiếu xóa bản ghi khỏi cả hai bảng. Chúng tôi đã xác định khóa ngoại trong bảng liên hệ là

Điều đó có nghĩa là nếu chúng tôi xóa bất kỳ bản ghi khách hàng nào khỏi bảng khách hàng, thì các bản ghi liên quan trong bảng liên hệ cũng sẽ bị xóa. Và CASCADE BẬT CẬP NHẬT sẽ tự động cập nhật trên bảng cha thành các trường được tham chiếu trong bảng con (Ở đây, đó là Customer_Id)

Thực hiện câu lệnh này để xóa một bản ghi khỏi bảng có tên là JOHN

Một lần nữa, nếu chúng ta nhìn vào các bảng của mình, chúng ta có thể thấy rằng cả hai bảng đã được thay đổi. Điều đó có nghĩa là các trường có tên JOHN sẽ bị xóa hoàn toàn khỏi cả hai bảng

Bàn làm việc MySQL khóa ngoại

Bây giờ, hãy kiểm tra CASCADE BẬT CẬP NHẬT. Ở đây, chúng tôi sẽ cập nhật Customer_Id của Mary trong bảng liên hệ dưới dạng

Một lần nữa, nếu chúng ta nhìn vào các bảng của mình, chúng ta có thể thấy rằng cả hai bảng đã được thay đổi với Customer_Id của Mary=3

Bàn làm việc MySQL khóa ngoại

Ví dụ khóa ngoại sử dụng hành động SET NULL

Ở đây, chúng ta sẽ hiểu cách hành động SET NULL hoạt động với khóa ngoại. Đầu tiên chúng ta tạo 2 bảng tên là Persons và Contacts như hình bên dưới

Bàn. người

Bàn. khách hàng

Tiếp theo, chúng ta cần chèn dữ liệu vào cả hai bảng bằng cách sử dụng câu lệnh sau

Bây giờ, hãy cập nhật ID của bảng "Người"

Cuối cùng, xác minh bản cập nhật bằng câu lệnh CHỌN được đưa ra bên dưới

Bàn làm việc MySQL khóa ngoại

Nếu chúng ta nhìn vào các bảng của mình, chúng ta có thể thấy rằng cả hai bảng đã được thay đổi. Các hàng có Person_Id=3 trong bảng Danh bạ tự động được đặt thành NULL do hành động BẬT CẬP NHẬT ĐẶT NULL

Cách DROP khóa ngoại

MySQL cho phép câu lệnh ALTER TABLE xóa khóa ngoại hiện có khỏi bảng. Cú pháp sau đây được sử dụng để hủy khóa ngoại

Ở đây, tên_bảng là tên của một bảng mà chúng ta sẽ xóa khóa ngoại. constraint_name là tên của khóa ngoại được thêm vào trong quá trình tạo bảng

Nếu chúng ta chưa biết tên của khóa ngoại hiện có trong bảng, hãy thực hiện lệnh sau

Nó sẽ cho đầu ra như bên dưới, nơi chúng ta có thể thấy rằng bảng contact có một khóa ngoại có tên fk_customer được hiển thị trong hình chữ nhật màu đỏ

Bàn làm việc MySQL khóa ngoại

Bây giờ, để xóa ràng buộc khóa ngoại này khỏi bảng liên hệ, hãy thực hiện câu lệnh như bên dưới

Chúng tôi có thể xác minh xem ràng buộc khóa ngoại có bị xóa hay không, sử dụng câu lệnh SHOW CREATE TABLE. Nó sẽ cho đầu ra như bên dưới, nơi chúng ta có thể thấy rằng khóa ngoại không còn khả dụng trong bảng contact

Bàn làm việc MySQL khóa ngoại

Xác định khóa ngoại bằng câu lệnh ALTER TABLE

Tuyên bố này cho phép chúng tôi thực hiện sửa đổi vào bảng hiện có. Đôi khi cần thêm khóa ngoại vào cột của bảng hiện có;

cú pháp

Sau đây là cú pháp của câu lệnh ALTER TABLE để thêm khóa ngoại vào bảng hiện có

Khi chúng ta thêm một khóa ngoại bằng cách sử dụng câu lệnh ALTER TABLE, trước tiên nên tạo một chỉ mục trên (các) cột, được tham chiếu bởi khóa ngoại

Thí dụ

Câu lệnh sau đây tạo hai bảng "Person" và "Contact" mà không có cột khóa ngoại trong định nghĩa bảng

Bàn. Người

Bàn. Tiếp xúc

Sau khi tạo bảng, nếu muốn thêm khóa ngoại vào bảng đã có, chúng ta cần thực hiện câu lệnh ALTER TABLE như bên dưới

Kiểm tra khóa ngoại

MySQL có một biến đặc biệt Foreign_key_cheks để kiểm soát việc kiểm tra khóa ngoại vào các bảng. Theo mặc định, nó được kích hoạt để thực thi tính toàn vẹn tham chiếu trong quá trình hoạt động bình thường trên các bảng. Biến này có bản chất động để nó hỗ trợ cả phạm vi toàn cầu và phiên

Làm cách nào để đặt khóa ngoại trong bàn làm việc của MySQL?

Để thêm khóa ngoại, nhấp vào hàng cuối cùng trong danh sách Tên khóa ngoại. Nhập tên cho khóa ngoại và chọn cột hoặc nhiều cột mà bạn muốn lập chỉ mục bằng cách kiểm tra tên cột trong danh sách Cột . Bạn có thể xóa một cột khỏi chỉ mục bằng cách xóa dấu kiểm khỏi cột thích hợp.

Khóa ngoại trong bàn làm việc của MySQL ở đâu?

Trong Trình chỉnh sửa bảng, chuyển đến tab Khóa ngoại (ở dưới cùng) . Các phím được hiển thị ở khung bên trái và chi tiết của các phím đã chọn được hiển thị ở bên phải. Bạn có thể thấy cặp cột ngoại và cột chính trong cột Cột và cột Tham chiếu trong lưới ở giữa cửa sổ.

Tùy chọn khóa ngoại trong bàn làm việc của MySQL là gì?

Khóa NGOÀI là một trường (hoặc tập hợp các trường) trong một bảng, tham chiếu đến KHÓA CHÍNH trong một bảng khác . Bảng có khóa ngoại được gọi là bảng con và bảng có khóa chính được gọi là bảng được tham chiếu hoặc bảng cha.

Làm cách nào để sử dụng khóa ngoại trong MySQL?

MySQL xác định khóa ngoại theo hai cách. Sử dụng câu lệnh CREATE TABLE. .
THAY ĐỔI BẢNG tên_bảng
THÊM [CONSTRAINT [ký hiệu]] KHÓA NGOẠI
[tên_chỉ_số] (tên_cột,. )
THAM KHẢO tên_bảng (tên_cột,. )
BẬT XÓA tham chiếuTùy chọn
TRÊN CẬP NHẬT tham chiếuTùy chọn