KHÓA NGOÀI SQL: Cách tạo trong SQL Server bằng ví dụ
KHÓA NGOẠI TỆ là gì?
A chính nước ngoài cung cấp cách thực thi tính toàn vẹn tham chiếu trong SQL Server. Nói một cách đơn giản, khóa ngoại đảm bảo các giá trị trong một bảng phải có trong bảng khác.
Quy định về FORIGN KEY
- NULL được cho phép trong khóa ngoại SQL.
- Bảng đang được tham chiếu được gọi là Bảng cha
- Bảng có Khóa ngoài trong SQL được gọi là Bảng con.
- Khóa ngoại SQL trong bảng con tham chiếu khóa chính trong bảng cha.
- Mối quan hệ cha-con này thực thi quy tắc được gọi là “Tham chiếu Integrity".
Ví dụ về Khóa ngoại bên dưới trong SQL kèm sơ đồ tóm tắt tất cả các điểm trên đối với FOREIGN KEY
Cách tạo KHÓA NGOẠI TỆ trong SQL
Chúng ta có thể tạo một chính nước ngoài trong máy chủ SQL ở 2 cách:
- Xưởng quản lý máy chủ SQL
- t-sql
Xưởng quản lý máy chủ SQL
Bảng cha mẹ: Giả sử chúng ta có một bảng Parent hiện có là 'Khóa học'. Course_ID và Course_name là hai cột có Course_Id là Khóa chính.
Bảng con: Chúng ta cần tạo bảng thứ hai làm bảng con. 'Course_ID' và 'Course_Strength' dưới dạng hai cột. Tuy nhiên, 'Course_ID' sẽ là Khóa ngoại.
Bước 1) Nhấp chuột phải vào Bảng>Mới>Bảng…
Bước 2) Nhập tên hai cột là 'Course_ID' và 'Course_Strength.' Nhấp chuột phải vào Cột 'Course_Id'. Bây giờ bấm vào Mối quan hệ.
Bước 3) In 'Mối quan hệ khóa ngoại,' Nhấp chuột 'Thêm vào'
Bước 4) Trong 'Thông số bảng và cột', nhấp vào '…' biểu tượng
Bước 5) Chọn 'Bảng khóa chính' làm 'Khóa học' và bảng mới hiện đang được tạo dưới dạng 'Bảng khóa ngoại' từ trình đơn thả xuống.
Bước 6) 'Bảng khóa chính' – Chọn cột 'Course_Id' làm cột 'Bảng khóa chính'.
'Bảng khóa ngoại'- Chọn cột 'Course_Id' làm cột 'Bảng khóa ngoại'. Bấm vào đồng ý.
Bước 7) Nhấp vào Thêm.
Bước 8) Đặt tên Bảng là 'Course_Strength' và nhấp vào OK.
Kết quả: Chúng tôi đã thiết lập mối quan hệ Cha-con giữa 'Khóa học' và 'Tất nhiên_sức mạnh.'
T-SQL: Tạo bảng Cha-con bằng T-SQL
Bảng cha mẹ: Hãy xem xét lại, chúng ta có một bảng Parent hiện có với tên bảng là 'Khóa học'.
Course_ID và Course_name là hai cột có Course_Id là Khóa chính.
Bảng con: Chúng ta cần tạo bảng thứ hai làm bảng con với tên là 'Course_Strength_TSQL.'
'Course_ID' và 'Course_Strength' dưới dạng hai cột cho bảng con Course_Strength_TSQL.' Tuy nhiên, 'Course_ID' sẽ là Khóa ngoại.
Dưới đây là cú pháp tạo bảng bằng FOREIGN KEY
Cú pháp:
CREATE TABLE childTable ( column_1 datatype [ NULL |NOT NULL ], column_2 datatype [ NULL |NOT NULL ], ... CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n) [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] );
Dưới đây là mô tả về các tham số trên:
- childTable là tên của bảng sẽ được tạo.
- cột_1, cột_2- các cột sẽ được thêm vào bảng.
- fkey_name- tên của ràng buộc khóa ngoại sẽ được tạo.
- child_column1, child_column2…child_column_n- tên các cột chidTable để tham chiếu khóa chính trong parentTable.
- parentTable- tên của bảng cha có khóa được tham chiếu trong bảng con.
- parent_column1, parent_column2, … parent_column3- các cột tạo nên khóa chính của bảng cha.
- BẬT XÓA. Một tham số tùy chọn. Nó chỉ định điều gì sẽ xảy ra với dữ liệu con sau khi xóa dữ liệu gốc. Một số giá trị cho tham số này bao gồm NO ACTION, SET NULL, CASCADE hoặc SET DEFAULT.
- BẬT CẬP NHẬT- Một tham số tùy chọn. Nó chỉ định điều gì sẽ xảy ra với dữ liệu con sau khi cập nhật dữ liệu gốc. Một số giá trị cho tham số này bao gồm NO ACTION, SET NULL, CASCADE hoặc SET DEFAULT.
- KHÔNG CÓ HÀNH ĐỘNG- được sử dụng cùng với BẬT XÓA và BẬT CẬP NHẬT. Điều đó có nghĩa là sẽ không có gì xảy ra với dữ liệu con sau khi cập nhật hoặc xóa dữ liệu gốc.
- CASCADE- được sử dụng cùng với ON DELETE và ON UPDATE. Dữ liệu con sẽ bị xóa hoặc cập nhật sau khi dữ liệu gốc bị xóa hoặc cập nhật.
- SET NULL- được sử dụng cùng với ON DELETE và ON UPDATE. Con sẽ được đặt thành null sau khi dữ liệu gốc được cập nhật hoặc xóa.
- THIẾT LẬP MẶC ĐỊNH- được sử dụng cùng với BẬT XÓA và BẬT CẬP NHẬT. Dữ liệu con sẽ được đặt thành giá trị mặc định sau khi cập nhật hoặc xóa dữ liệu gốc.
Hãy xem ví dụ về Khóa ngoại trong SQL để tạo bảng có Một cột làm KHÓA NGOẠI TỆ:
Ví dụ về khóa ngoại trong SQL
truy vấn:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Bước 1) Chạy truy vấn bằng cách nhấp vào thực thi.
Kết quả: Chúng tôi đã thiết lập mối quan hệ Cha-con giữa 'Khóa học' và 'Khóa_sức mạnh_TSQL.'
Sử dụng BẢNG ALTER
Bây giờ chúng ta sẽ tìm hiểu cách sử dụng Khóa ngoài trong SQL và thêm Khóa ngoài trong máy chủ SQL bằng cách sử dụng câu lệnh ALTER TABLE, chúng ta sẽ sử dụng cú pháp dưới đây:
ALTER TABLE childTable ADD CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);
Dưới đây là mô tả về các tham số được sử dụng ở trên:
- childTable là tên của bảng sẽ được tạo.
- cột_1, cột_2- các cột sẽ được thêm vào bảng.
- fkey_name- tên của ràng buộc khóa ngoại sẽ được tạo.
- child_column1, child_column2…child_column_n- tên các cột chidTable để tham chiếu khóa chính trong parentTable.
- parentTable- tên của bảng cha có khóa được tham chiếu trong bảng con.
- parent_column1, parent_column2, … parent_column3- các cột tạo nên khóa chính của bảng cha.
Bảng thay đổi thêm ví dụ về Khóa ngoại:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Chúng tôi đã tạo một khóa ngoại có tên fkey_student_admission trên bảng khoa. Khóa ngoại này tham chiếu đến cột nhập học của bảng sinh viên.
Ví dụ truy vấn FOREIGN KEY
Trước tiên, hãy xem Dữ liệu bảng gốc của chúng tôi, KHÓA HỌC.
truy vấn:
SELECT * from COURSE;
Bây giờ hãy chèn một số hàng vào bảng Con: 'Khóa_sức mạnh_TSQL.'
Chúng tôi sẽ cố gắng chèn hai loại hàng
- Loại đầu tiên mà Course_Id trong bảng con sẽ tồn tại trong Course_Id của bảng Parent. tức là Course_Id = 1 và 2
- Loại thứ hai, Course_Id trong bảng con không tồn tại trong Course_Id của bảng Parent. tức là Course_Id = 5
truy vấn:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Kết quả: Hãy cùng nhau chạy Truy vấn để xem bảng Parent và Child của chúng ta
Hàng có Course_ID 1 và 2 tồn tại trong bảng Course_ Strength. Trong khi đó, Course_ID 5 là một ngoại lệ.
Tổng kết
- Mọi giá trị của Khóa ngoại phải là một phần của Khóa chính của các bảng khác.
- Sản phẩm MySQL Khóa ngoại có thể tham chiếu đến một cột khác trong cùng bảng. Tài liệu tham khảo này được gọi là tài liệu tham khảo tự.
- Ràng buộc khóa ngoài SQL: được sử dụng để bảo mật các liên kết giữa các bảng và dữ liệu không hợp lệ để chèn vào cột Khóa ngoài.
- Bạn có thể tạo Khóa ngoại bằng cách sử dụng Tạo bảng, Thay đổi bảng hoặc Xưởng quản lý máy chủ SQL.
- Đây là sự khác biệt giữa Khóa chính và Khóa ngoại: Bấm vào đây