Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

KHÓA NGOẠI LỆ SQL

Trong bài viết này, chúng ta sẽ tìm hiểu về các ràng buộc NGOẠI KHÓA và cách xác định ràng buộc NGOẠI KHÓA để xây dựng mối quan hệ giữa hai bảng.

Trong Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), NGOẠI KHÓA là một trường hoặc nhiều trường được sử dụng để xây dựng mối quan hệ giữa hai bảng hoặc nối hai bảng.

  • FOREIGN KEY còn được gọi là khóa tham chiếu trong RDBMS
  • Sử dụng ràng buộc NGOẠI KHÓA giữa hai bảng, chúng tôi xác định mối quan hệ cha-con giữa hai bảng.
  • Trường xác định các ràng buộc CHÍNH CHÍNH trong bảng được gọi là bảng mẹ, trong khi trường tương tự xác định các ràng buộc NGOẠI KHÓA trong một bảng khác được gọi là bảng con.
  • Có thể chỉ có một TỪ KHÓA CHÍNH trong bảng, nhưng không có giới hạn xác định cho TỪ KHÓA NGOẠI TỆ. Chúng ta có thể có một hoặc nhiều TỪ KHÓA NGOẠI TỆ trên bàn.
  • Chúng tôi có thể xác định các ràng buộc NGOẠI KHÓA trong khi tạo bảng hoặc xác định các ràng buộc NGOẠI KHÓA trên bảng đã có.

Hãy lấy một ví dụ để hiểu và tìm hiểu về các ràng buộc NGOẠI KHÓA.

Ví dụ:

Ở đây, chúng ta có hai bảng một là bảng Khóa học và bảng thứ hai là bảng Sinh viên:

Các sinh viên lựa chọn các khóa học. Ví dụ về ràng buộc NGOẠI KHÓA sau đây được xác định trên một trường.

Bảng số một:Bảng học sinh

Student_Id First_Name Last_Name Email_Id Thành phố
101 Kareena Sayyed [email protected] Hyderabad
102 Anmol Temani [email protected] Jalgaon
103 Gây chết người Patel [email protected] Mumbai
104 Sakshi Máy hút mùi [email protected] Pune
105 Suresh Kohli [email protected] Hyderabad

Bảng số hai:Bảng khóa học

Course_Id Course_Name Student_Id
C101 Java 101
C102 SQL 102
C103 SOA Không có
C104 SAP 104
C105 MuleSoft 103
C101 Java 105

Trong bảng Student, trường Student_Id là KHÓA CHÍNH và trong bảng Course, Student_Id là NGOẠI KHÓA.

FOREIGN KEY ràng buộc ngăn không cho dữ liệu không hợp lệ được chèn vào cột khóa ngoại vì nó phải là một trong những giá trị có trong bảng mẹ.

Xác định Ràng buộc NGOẠI KHÓA trên TẠO BẢNG

Ví dụ sau xác định một TỪ KHÓA NGOẠI TỆ trên bảng Khóa học.

Đầu tiên, chúng tôi đã tạo bảng Sinh viên với các trường sau:

CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));

Ví dụ sau đây cho thấy cách xác định các ràng buộc NGOẠI KHÓA trên bảng khác.

Khóa học tên bảng:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

Trong bảng Khóa học, chúng tôi không xác định bất kỳ TỪ KHÓA CHÍNH. Chỉ cần xác định các ràng buộc NGOẠI KHÓA trên Student_Id.

Ví dụ về ràng buộc FOREIGN KEY sau đây được xác định trên nhiều trường.

Giả sử chúng ta có ba bảng, một bảng là bảng Gói, bảng thứ hai là bảng Dữ liệu và bảng thứ ba là bảng Talk_time:

Bảng 1:Gói:

Package_Id Data_Id Talktime_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Bảng 2:Dữ liệu:

Data_Id Data_Limit Data_Price
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Bảng 3:Talk_Time:

Talk_Time_Id Talk_Time _Limit Talk_Time _Price
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

Trong bảng Talk_Time, Talk_Time_Id là CHÌA KHÓA CHÍNH.

Trong bảng Dữ liệu, Data_Id là TỪ KHÓA CHÍNH.

Trong khi trong bảng Gói, Talk_Time_Id và Data_Id là các khóa FOREIGN

Bảng số một:Dữ liệu:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

Bảng số hai:Talk_Time:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

Bảng số ba:Gói:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

Ràng buộc NGOẠI KHÓA sử dụng BẢNG ALTER:

Giả sử chúng ta đã tạo bảng và muốn xác định các ràng buộc NGOẠI KHÓA trên trường. Chúng tôi sẽ sử dụng truy vấn ALTER TABLE để thêm các ràng buộc NGOẠI KHÓA trong trường hợp như vậy.

Truy vấn sau được sử dụng để thêm các ràng buộc NGOẠI KHÓA trên trường Student_Id.

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

ADD Keyword được sử dụng sau tên bảng để thêm các ràng buộc NGOẠI KHÓA vào bảng đã tồn tại.

DROP ràng buộc NGOẠI KHÓA khỏi bảng

Sử dụng truy vấn sau để xóa ràng buộc NGOẠI KHÓA khỏi bảng.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Từ khóa Drop được sử dụng để xóa các ràng buộc FOREIGN KEY khỏi trường Student_Id.

course_ibfk_1 là tên ràng buộc khóa ngoài.

Chúng ta có thể có giá trị null trong trường ràng buộc NGOẠI KHÓA. Chúng tôi có thể có các giá trị trùng lặp trong trường ràng buộc NGOẠI KHÓA.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về auto_explain:Cách tự động ghi nhật ký các kế hoạch truy vấn Postgres chậm

  2. Tổng quan về chức năng CheckDB của DBCC

  3. Cấu hình truy vấn thân thiện với băng thông cho Cơ sở dữ liệu Azure SQL

  4. Cách tạo dạng xem trong SQL

  5. Phân tích cú pháp các giá trị mặc định của tham số bằng PowerShell - Phần 2