Ta đang làm việc với cơ sở dữ liệu quan hệ mà điều tạo nên quan hệ giữa các bảng đó chính là khóa ngoại, nó giúp dễ dàng xác định những kết nối khác nhau tồn tại trong một hệ thống quản lý database. Trong bài viết dưới đây, SmartData sẽ chia sẻ những kiến thức cơ bản cũng như cách tạo khóa ngoại trong sql như thế nào
Khóa ngoại (Foreign Key) là gì?
Các bảng trong database không tồn tại độc lập mà chúng còn có thể tồn tại mối quan hệ với nhau về mặt dữ liệu
Mối quan hệ này được thể hiện thông qua ràng buộc giá trị dữ liệu xuất hiện ở bảng này thì xuất hiện trước ở một bảng khác
Điều này làm đảm bảo được tính đúng đắn và hợp lệ của dữ liệu trong database.
Chúng ta đang nói trên tổng thể là Khóa ngoại của bảng trong cơ sở dữ liệu quan hệ SQL. Vậy mới mỗi loại cơ sở dữ liệu quan hệ cụ thể thì thao tác với khóa ngoại sẽ ra sao. Hãy cùng mình tìm hiểu sau đây
Tạo khóa ngoại trên các cơ sở dữ liệu
Tạo khóa ngoại trong MySQL
- Tạo khóa ngoại trong lệnh tạo bảng
Chúng ta sẽ tạo trực tiếp trong lệnh tạo bảng và cú pháp của nó cũng tương tự như lệnh tạo khóa chính, nghĩa là sẽ đặt ở cuối phần khai báo field. Nếu sử dụng cách này thì khóa ngoại sẽ không có tên.
Ví dụ:
CREATE TABLE Groups ( groupid INT(11) NOT NULL PRIMARY KEY, title INT(11) NOT NULL, LEVEL TINYINT(1) DEFAULT 1 NOT NULL ); CREATE TABLE Users( userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL , email VARCHAR (50) NOT NULL , groupid INT(11), FOREIGN KEY (groupid) REFERENCES Groups(groupid) );
Trong trường hợp ta muốn đặt trên cho khóa ngoại
CREATE TABLE Users( userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL , email VARCHAR (50) NOT NULL , groupid INT(11), CONSTRAINT fk_group FOREIGN KEY (groupid) REFERENCES Groups(groupid) );
- Tạo khóa ngoại sau khi đã tạo bảng
Ví dụ:
ALTER TABLE Users ADD FOREIGN KEY(groupid) REFERENCES Groups(groupid);
Hoặc trong trường hợp muốn đặt tên khóa ngoại:
ALTER TABLE Users ADD CONSTRAINT fk_group FOREIGN KEY(groupid) REFERENCES Groups(groupid);
Tạo khóa ngoại trong SQL Server
- Tạo khóa ngoại trong lệnh tạo bảng
Ví dụ:
CREATE TABLE GiangVien ( MaGV CHAR(10) NOT NULL, Name NVARCHAR(100) , DiaChi NVARCHAR(100) , NgaySinh DATE, MaBM CHAR(10), FOREIGN KEY(MaBM) REFERENCES BOMON(MaBM) )
- Tạo khóa ngoại sau khi tạo bảng
Ví dụ:
ALTER TABLE HocSinh FOREIGN KEY(MaLop) REFERENCES Lop(MaLop)
Hoặc trong trường hợp muốn đặt tên khóa ngoại:
ALTER TABLE HocSinh ADD CONSTRAINT FK_HS FOREIGN KEY(MaLop) REFERENCES Lop(MaLop)
Tạo khóa ngoại trong Oracle
- Tạo khóa ngoại trong lệnh tạo bảng
Ví dụ:
CREATE TABLE Orders ( OrderID int NOT NULL PRIMARY KEY, OrderNumber int NOT NULL, PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );
Trong trường hợp muốn đặt tên cho khóa ngoại:
CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );
- Tạo khóa ngoại sau khi tạo bảng: ta sử dụng từ khóa ALTER TABLE
Ví dụ:
ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Trong trường hợp muốn đặt tên cho khóa ngoại:
ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Kết luận
Qua bài viết, chúng ta đã tìm hiểu kĩ hơn về việc tạo khóa ngoại trên từng loại cơ sở dữ liệu phổ biến, để tìm hiểu thêm kiến thức hay về SQL, bạn có thể tham khảo về seri của chúng tôi theo link dưới đây.
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: