Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về khóa ngoại của MySQL và cách tạo, loại bỏ và vô hiệu hóa ràng buộc khóa ngoại
Giới thiệu về khóa ngoại MySQL
Khóa ngoại là một cột hoặc nhóm cột trong bảng liên kết với cột hoặc nhóm cột trong bảng khác. Khóa ngoại đặt các ràng buộc đối với dữ liệu trong các bảng liên quan, cho phép MySQL duy trì tính toàn vẹn tham chiếu
Hãy xem các bảng
5 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
6 sau đây từ cơ sở dữ liệu mẫuCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Trong sơ đồ này, mỗi khách hàng có thể có 0 hoặc nhiều đơn hàng và mỗi đơn hàng thuộc về một khách hàng
Mối quan hệ giữa bảng
5 và bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
6 là quan hệ một đối nhiều. Và mối quan hệ này được thiết lập bởi khóa ngoại trong bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
6 được chỉ định bởi cộtCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
0Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Cột
0 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
6 liên kết với cột khóa chínhCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
0 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Bảng
5 được gọi là bảng cha hoặc bảng được tham chiếu và bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
6 được gọi là bảng con hoặc bảng tham chiếuCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Thông thường, các cột khóa ngoại của bảng con thường tham chiếu đến các cột khóa chính của bảng cha
Một bảng có thể có nhiều khóa ngoại trong đó mỗi khóa ngoại tham chiếu đến khóa chính của các bảng cha khác nhau
Khi đã có ràng buộc khóa ngoại, các cột khóa ngoại từ bảng con phải có hàng tương ứng trong các cột khóa cha của bảng cha hoặc các giá trị trong các cột khóa ngoại này phải là
7 [xem ví dụ về hành độngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
8 bên dưới]Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Ví dụ: mỗi hàng trong bảng
6 có mộtCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
0 tồn tại trong cộtCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
0 của bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
5. Nhiều hàng trong bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
6 có thể có cùng mộtCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
0Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Khóa ngoại tự tham chiếu
Đôi khi, bảng con và bảng cha có thể tham chiếu đến cùng một bảng. Trong trường hợp này, khóa ngoại tham chiếu trở lại khóa chính trong cùng một bảng
Xem bảng
05 sau đây từ cơ sở dữ liệu mẫuCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Cột
06 là khóa ngoại đề cập đến cộtCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
07 là khóa chính của bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
05Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Mối quan hệ này cho phép bảng
05 lưu trữ cấu trúc báo cáo giữa nhân viên và người quản lý. Mỗi nhân viên báo cáo cho 0 hoặc một nhân viên và một nhân viên có thể có 0 hoặc nhiều cấp dướiCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Khóa ngoại trên cột
06 được gọi là khóa ngoại đệ quy hoặc tự tham chiếuCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Cú pháp MySQL INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
61
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Đây là cú pháp cơ bản để xác định ràng buộc khóa ngoài trong câu lệnh
62 hoặcCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
63Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
9Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Trong cú pháp này
Đầu tiên, chỉ định tên của ràng buộc khóa ngoại mà bạn muốn tạo sau từ khóa
64. Nếu bạn bỏ qua tên ràng buộc, MySQL sẽ tự động tạo tên cho ràng buộc khóa ngoạiCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Thứ hai, chỉ định danh sách các cột khóa ngoại được phân tách bằng dấu phẩy sau từ khóa
61. Tên khóa ngoại cũng là tùy chọn và được tạo tự động nếu bạn bỏ qua nóCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Thứ ba, chỉ định bảng cha theo sau là danh sách các cột được phân tách bằng dấu phẩy mà các cột khóa ngoài tham chiếu đến
Cuối cùng, chỉ định cách khóa ngoại duy trì tính toàn vẹn tham chiếu giữa bảng con và bảng cha bằng cách sử dụng mệnh đề
66 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
67.Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
68 xác định hành động mà MySQL sẽ thực hiện khi các giá trị trong cột khóa chính bị xóa [Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
66] hoặc được cập nhật [Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
67]Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
MySQL có năm tùy chọn tham chiếu.
71,Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
8,Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
73,Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
74 và
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
75Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
71. nếu một hàng từ bảng cha bị xóa hoặc cập nhật, giá trị của các hàng phù hợp trong bảng con sẽ tự động bị xóa hoặc cập nhật
Code language: SQL [Structured Query Language] [sql]INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
8. nếu một hàng từ bảng cha bị xóa hoặc cập nhật, các giá trị của cột khóa ngoại [hoặc các cột] trong bảng con được đặt thành
Code language: SQL [Structured Query Language] [sql]SELECT * FROM categories;
7
Code language: SQL [Structured Query Language] [sql]SELECT * FROM categories;
74. nếu một hàng từ bảng cha có một hàng phù hợp trong bảng con, MySQL sẽ từ chối xóa hoặc cập nhật các hàng trong bảng cha
Code language: SQL [Structured Query Language] [sql]INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
73. giống như
Code language: SQL [Structured Query Language] [sql]INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
74
Code language: SQL [Structured Query Language] [sql]INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
75. được công nhận bởi trình phân tích cú pháp MySQL. Tuy nhiên, hành động này bị cả hai bảng InnoDB và NDB từ chối
Code language: SQL [Structured Query Language] [sql]INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Trên thực tế, MySQL hỗ trợ đầy đủ ba hành động.
74,Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
71 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
8Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Nếu bạn không chỉ định mệnh đề
66 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
67, hành động mặc định làCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
74Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
MySQL INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
61 ví dụ
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Hãy tạo một cơ sở dữ liệu mới có tên là
60 để trình diễnCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
7Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Hành động INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
74 & INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
73
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Bên trong cơ sở dữ liệu
60, tạo hai bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
3Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
66 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65 là cột khóa ngoại tham chiếu đến cộtCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
66 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Bởi vì chúng tôi không chỉ định bất kỳ mệnh đề
67 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
66 nào, hành động mặc định làCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
74 cho cả thao tác cập nhật và xóaCode language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Các bước sau minh họa hành động
74Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
1] Chèn hai hàng vào bảng
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
2] Chọn dữ liệu từ bảng
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
3] Chèn một hàng mới vào bảng
65.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
0Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Nó hoạt động vì
66 1 tồn tại trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
4] Cố gắng chèn một hàng mới vào bảng
65 với giá trịCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
66 không tồn tại trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
6Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
MySQL đã đưa ra lỗi sau
7Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
5] Cập nhật giá trị trong cột ________ 566 trong bảng ________ 564 thành ________ 5714
8Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
MySQL đã đưa ra lỗi này
6Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Vì tùy chọn
74, bạn không thể xóa hoặc cập nhật
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
716 vì nó được tham chiếu bởiCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
717Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
718 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Code language: SQL [Structured Query Language] [sql]
71 hành động
INSERT INTO categories[categoryName]
VALUES
['Smartphone'],
['Smartwatch'];
Các bước này minh họa cách hoạt động của các tác vụ
721 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
722Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
1] Bỏ bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
70Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
2] Tạo bảng
65 với các tùy chọnCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
721 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
726 cho khóa ngoạiCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
71Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
3] Chèn bốn hàng vào bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
72Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
4] Chọn dữ liệu từ bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
73Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
5] Cập nhật
66 từ 1 đến 100 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
74Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
6] Xác minh bản cập nhật
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
7] Lấy dữ liệu từ bảng
65.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
73Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Như bạn có thể thấy, hai hàng có giá trị
718 trong cộtCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
66 của bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65 đã được tự động cập nhật thànhCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
714 do hành độngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
721.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
8] Xóa
66 2 khỏi bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
77Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
9] Xác minh việc xóa
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
10] Kiểm tra bảng
65.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
73Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Tất cả sản phẩm có
66 2 từ bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65 đã tự động bị xóa do hành độngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
726.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
SELECT * FROM categories;
Code language: SQL [Structured Query Language] [sql]
8 hành động
SELECT * FROM categories;
Các bước này minh họa cách hoạt động của các tác vụ
744 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
745Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
1] Bỏ cả hai bảng
64 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
30Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
2] Tạo bảng
64 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
31
SELECT * FROM categories;
Code language: SQL [Structured Query Language] [sql]
Khóa ngoại trong bảng
65 đã thay đổi thành tùy chọnCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
744 vàCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
745Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
3] Chèn các hàng vào bảng
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
32Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
4] Chèn hàng vào bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
72Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
5] Cập nhật
66 từ 1 đến 100 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
74Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
6] Xác minh bản cập nhật
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
7] Chọn dữ liệu từ bảng
65.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Các hàng có
66 1 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65 được đặt tự động thànhCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
7 do tác vụCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
744Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
8] Xóa
66 2 khỏi bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
64Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
36Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
9] Kiểm tra bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
73Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Các giá trị trong cột
66 của các hàng cóCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
66 2 trong bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
65 được đặt tự động thànhCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
7 do tác vụCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
745.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Bỏ các ràng buộc khóa ngoại của MySQL
Để loại bỏ ràng buộc khóa ngoại, bạn sử dụng câu lệnh
770Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
38Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Trong cú pháp này
- Đầu tiên, chỉ định tên của bảng mà bạn muốn loại bỏ khóa ngoại sau từ khóa
770
Code language: SQL [Structured Query Language] [sql]SELECT * FROM categories;
- Thứ hai, chỉ định tên ràng buộc sau từ khóa
772
Code language: SQL [Structured Query Language] [sql]SELECT * FROM categories;
Lưu ý rằng
773 là tên của ràng buộc khóa ngoại được chỉ định khi bạn tạo hoặc thêm ràng buộc khóa ngoại vào bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Để có được tên ràng buộc đã tạo của một bảng, bạn sử dụng câu lệnh
774Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
39Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Ví dụ, để xem các khóa ngoại của bảng
65, bạn sử dụng câu lệnh sauCode language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
0Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Sau đây là đầu ra của tuyên bố
Như bạn có thể thấy rõ ràng từ đầu ra, bảng
65 bảng có một ràng buộc khóa ngoại.Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
777Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
Và câu lệnh này loại bỏ ràng buộc khóa ngoại của bảng
65Code language: SQL [Structured Query Language] [sql]
SELECT * FROM categories;
1Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Để đảm bảo rằng ràng buộc khóa ngoại đã bị loại bỏ, bạn có thể xem cấu trúc của bảng sản phẩm
0Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Tắt kiểm tra khóa ngoại
Đôi khi, rất hữu ích khi tắt chức năng kiểm tra khóa ngoại. g. , khi bạn nhập dữ liệu từ tệp CSV vào bảng. Nếu bạn không tắt kiểm tra khóa ngoại, bạn phải tải dữ liệu theo thứ tự thích hợp. e. , bạn phải tải dữ liệu vào bảng cha trước rồi mới đến bảng con, việc này có thể rất tẻ nhạt. Tuy nhiên, nếu bạn tắt kiểm tra khóa ngoại, bạn có thể tải dữ liệu vào các bảng theo bất kỳ thứ tự nào
Để tắt kiểm tra khóa ngoại, bạn sử dụng câu lệnh sau
3Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Và bạn có thể kích hoạt nó bằng cách sử dụng câu lệnh sau
4Code language: SQL [Structured Query Language] [sql]
INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];
Trong hướng dẫn này, bạn đã tìm hiểu về khóa ngoại MySQL và cách tạo ràng buộc khóa ngoại với các tùy chọn tham chiếu khác nhau