Ngôn Ngữ SQL - Khóa Ngoại

Khóa ngoại trong SQL

Trong cơ sở dữ liệu quan hệ, khóa ngoại là trường hoặc cột được sử dụng để thiết lập liên kết giữa hai bảng.

Nói một cách đơn giản, một khóa ngoại trong một bảng được sử dụng để trỏ đến khóa chính trong một bảng khác.

Chúng ta lấy một ví dụ để giải thích :

Dưới đây là hai bảng đầu tiên là bảng sinh viên và thứ hai là bảng đơn hàng.

Ở đây các đơn đặt hàng được bởi các sinh viên.

Bảng "STUDENTS"

S_Id LastName FirstName CITY
1 MAURYA AJEET ALLAHABAD
2 JAISWAL RATAN GHAZIABAD
3 ARORA SAUMYA MODINAGAR

Bảng "ORDERS":

O_Id OrderNo S_Id
1 99586465 2
2 78466588 2
3 22354846 3
4 57698656 1
Lưu ý:Cột "S_Id" trong bảng "ORDERS" trỏ đến cột "S_Id" trong bảng "STUDENTS".
  • Cột "S_Id" trong bảng "STUDENTS" là khóa chính trong bảng "STUDENTS".
  • Cột "S_Id" trong bảng "ORDERS" là khóa ngại trong bảng "ORDERS".

Ràng buộc khóa ngoài thường ngăn chặn việc phá hủy liên kết giữa các bảng.

Nó cũng ngăn chặn dữ liệu không hợp lệ để nhập vào cột khóa ngoài.

Cách tạo ràng buộc khóa ngoại trong bảng bằng câu lệnh SQL

(Xác định ràng buộc khóa ngoại trên một cột)

Để tạo khóa ngoại trên cột "S_Id" khi bảng "ORDERS" được tạo:

MySQL:

CREATE TABLE orders   (   O_Id int NOT NULL,   Order_No  int NOT NULL,   S_Id int,   PRIMAY KEY (O_Id),   FOREIGN KEY (S_Id) REFERENCES Persons (S_Id)   )  

SQL Server /Oracle / MS Access:

CREATE TABLE Orders   (   O_Id int NOT NULL PRIMAY KEY,   Order_No int NOT NULL,   S_Id int FOREIGN KEY REFERENCES persons (S_Id)   )  

Tạo ràng buộc khóa ngoại dùng lệnh ALTER TABLE trong SQL

Nếu bảng ORDERS đã được tạo và bạn muốn tạo ràng buộc khóa ngoại trên cột "S_Id", bạn nên viết cú pháp sau:

Xác định cột cần tạo khóa ngoại :

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders   ADD CONSTRAINT fk_PerOrders   FOREIGN KEY(S_Id)   REFERENCES Students (S_Id)  

Xóa ràng buộc khóa ngoại trong bảng

Cú pháp:

MySQL:

ALTER TABLE Orders   ROP FOREIGN KEY fk_PerOrders  

SQL Server / Oracle / MS Access:

ALTER TABLE Orders   DROP CONSTRAINT fk_PerOrders  

Sự khác biệt giữa khóa chính và khóa ngoại trong SQL:

Đây là một số khác biệt quan trọng giữa khóa chính và khóa ngoại trong SQL-

Khóa chính không thể là null, mặt khác, khóa ngoại có thể là null.

Khóa chính luôn là duy nhất trong khi khóa ngoại có thể nhiều hơn một.

Khóa chính xác định duy nhất một bản ghi trong bảng trong khi khóa ngoại là trường trong bảng là khóa chính trong bảng khác.

Mặt khác, chỉ có một khóa chính trong bảng, chúng ta có thể có nhiều khóa ngoại trong bảng.

Theo mặc định, khóa chính thêm một chỉ mục được phân cụm, mặt khác, khóa ngoại không tự động tạo một chỉ mục, phân cụm hoặc không phân cụm. Bạn phải tự tạo một chỉ mục cho khóa ngoại.

Từ khóa » Khóa Chính Và Khóa Ngoại Trong Access