Cú pháp SQL FOREIGN KEY Constraint

Ràng buộc khóa ngoại (FOREIGN KEY constraint) trong SQL được sử dụng để thiết lập mối quan hệ giữa các bảng trong cơ sở dữ liệu. Nó đảm bảo tính toàn vẹn của dữ liệu bằng cách tham chiếu một cột hoặc nhóm các cột trong một bảng (bảng con) đến khóa chính của một bảng khác (bảng cha).

foreign

Có hai cách để tạo ràng buộc FOREIGN KEY:

  1. Thêm ràng buộc khi tạo bảng:
CREATE TABLE <Ten bang con> (
  <Cot>,
  <Cot>,
  FOREIGN KEY (<Cot ngoai>, <Cot ngoai 1>, ...) REFERENCES <Ten bang cha> (<Cot chinh>, <Cot chinh 1>, ...)
  <Cot khac>,
);
  1. Thêm ràng buộc sau khi tạo bảng:
ALTER TABLE <Ten bang con>
ADD FOREIGN KEY (<Cot ngoai>, <Cot ngoai 1>, ...) REFERENCES <Ten bang cha> (<Cot chinh>, <Cot chinh 1>, ...);

Trong đó:

  • <Ten bang con>: Tên của bảng con.
  • <Cot>: Các cột trong bảng con.
  • <Cot ngoai>: Tên của cột (hoặc nhóm các cột) trong bảng con tham chiếu đến khóa chính của bảng cha.
  • <Ten bang cha>: Tên của bảng cha chứa khóa chính.
  • <Cot chinh>: Tên của cột (hoặc nhóm các cột) tạo thành khóa chính của bảng cha.

Một số lưu ý:

  • Kiểu dữ liệu và thứ tự sắp xếp của các cột trong FOREIGN KEY phải tương thích với các cột trong REFERENCES.
  • Bảng cha phải tồn tại trước khi tạo ràng buộc khóa ngoại trên bảng con.
  • Ràng buộc FOREIGN KEY có thể tham chiếu đến một khóa chính hoặc một khóa duy nhất (UNIQUE) trong bảng cha.
  1. Xoá FOREIGN KEY Constraint:
--Mysql
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

--SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

Ví dụ:

CREATE TABLE Orders (
  OrderID INT PRIMARY KEY,
  CustomerID INT,
  FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

Trong ví dụ này, cột CustomerID trong bảng Orders tham chiếu đến khóa chính CustomerID trong bảng Customers. Điều này đảm bảo rằng mỗi đơn hàng (Order) phải được liên kết với một khách hàng (Customer) hợp lệ.

 

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA), là người đang tập tành viết lách trên blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. #Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn cần người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận