Ràng buộc MySQL

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
5 và

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 sau đây từ cơ sở dữ liệu mẫu

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
5 và bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
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ảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 được chỉ định bởi cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0

Cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0 trong bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 liên kết với cột khóa chính

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0 trong bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
5

Bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
5 được gọi là bảng cha hoặc bảng được tham chiếu và bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 được gọi là bảng con hoặc bảng tham chiếu

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à

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
7 [xem ví dụ về hành động

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
8 bên dưới]

Ví dụ: mỗi hàng trong bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 có một

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0 tồn tại trong cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0 của bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
5. Nhiều hàng trong bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6 có thể có cùng một

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
0

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
05 sau đây từ cơ sở dữ liệu mẫu

Cột

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
06 là khóa ngoại đề cập đến cột

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
07 là khóa chính của bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
05

Mối quan hệ này cho phép bảng

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
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ưới

Khóa ngoại trên cột

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
06 được gọi là khóa ngoại đệ quy hoặc tự tham chiếu

Cú pháp MySQL

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
61

Đây là cú pháp cơ bản để xác định ràng buộc khóa ngoài trong câu lệnh

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
62 hoặc

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
63

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
9

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
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ại

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
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ó

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 đề

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
66 và

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
67.

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
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 [

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
66] hoặc được cập nhật [

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
67]

MySQL có năm tùy chọn tham chiếu.

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
71,

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
8,

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
73,

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
74 và

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
75

  • INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

    Code language: SQL [Structured Query Language] [sql]
    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
  • SELECT * FROM categories;

    Code language: SQL [Structured Query Language] [sql]
    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

    SELECT * FROM categories;

    Code language: SQL [Structured Query Language] [sql]
    7
  • INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

    Code language: SQL [Structured Query Language] [sql]
    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
  • INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

    Code language: SQL [Structured Query Language] [sql]
    73. giống như

    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]
    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

Trên thực tế, MySQL hỗ trợ đầy đủ ba 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]
71 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
8

Nếu bạn không chỉ định mệnh đề

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
66 và

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
67, hành động mặc định là

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
74

MySQL

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
61 ví dụ

Hãy tạo một cơ sở dữ liệu mới có tên là

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
60 để trình diễn

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
7

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

Bên trong cơ sở dữ liệu

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
60, tạo hai bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
3

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 là cột khóa ngoại tham chiếu đến cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 trong bảng 

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

Bởi vì chúng tôi không chỉ định bất kỳ mệnh đề

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
67 và

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
66 nào, hành động mặc định là

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
74 cho cả thao tác cập nhật và xóa

Các bước sau minh họa hành động

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
74

1] Chèn hai hàng vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]

2] Chọn dữ liệu từ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]

3] Chèn một hàng mới vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65.

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
0

Nó hoạt động vì

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 1 tồn tại trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

4] Cố gắng chèn một hàng mới vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 với giá trị

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66  không tồn tại trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
6

MySQL đã đưa ra lỗi sau

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
7

5] Cập nhật giá trị trong cột ________ 566 trong bảng ________ 564 thành ________ 5714

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
8

MySQL đã đưa ra lỗi này

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
6

Vì tùy chọn

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
74, bạn không thể xóa hoặc cập nhật

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
716 vì nó được tham chiếu bởi

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
717

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
718 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
71 hành động

Các bước này minh họa cách hoạt động của các tác vụ

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
721 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
722

1] Bỏ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
70

2] Tạo bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 với các tùy chọn

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
721 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
726 cho khóa ngoại

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
71

3] Chèn bốn hàng vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
72

4] Chọn dữ liệu từ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
73

5] Cập nhật

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 từ 1 đến 100 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64.

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
74

6] Xác minh bản cập nhật

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]

7] Lấy dữ liệu từ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65.

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
73

Như bạn có thể thấy, hai hàng có giá trị

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
718 trong cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 của bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 đã được tự động cập nhật thành

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
714 do hành động

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
721.

8] Xóa

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 2 khỏi bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
77

9] Xác minh việc xóa

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]

10] Kiểm tra bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65.

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
73

Tất cả sản phẩm có

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 2 từ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 đã tự động bị xóa do hành động

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
726.

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
8 hành động

Các bước này minh họa cách hoạt động của các tác vụ

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
744 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
745

1] Bỏ cả hai bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
30

2] Tạo bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
31

Khóa ngoại trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 đã thay đổi thành tùy chọn

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
744 và

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
745

3] Chèn các hàng vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
32

4] Chèn hàng vào bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
72

5] Cập nhật

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 từ 1 đến 100 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
74

6] Xác minh bản cập nhật

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]

7] Chọn dữ liệu từ bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65.

Các hàng có

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 1 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 được đặt tự động thành

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
7 do tác vụ

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
744

8] Xóa

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 2 khỏi bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
64

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
36

9] Kiểm tra bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
73

Các giá trị trong cột

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 của các hàng có

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
66 2 trong bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 được đặt tự động thành

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
7 do tác vụ

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
745.

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

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
770

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
38

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

    SELECT * FROM categories;

    Code language: SQL [Structured Query Language] [sql]
    770
  • Thứ hai, chỉ định tên ràng buộc sau từ khóa

    SELECT * FROM categories;

    Code language: SQL [Structured Query Language] [sql]
    772

Lưu ý rằng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
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ảng

Để 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

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
774

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
39

Ví dụ, để xem các khóa ngoại của bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65, bạn sử dụng câu lệnh sau

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
0

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

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65 bảng có một ràng buộc khóa ngoại.

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
777

Và câu lệnh này loại bỏ ràng buộc khóa ngoại của bảng

SELECT * FROM categories;

Code language: SQL [Structured Query Language] [sql]
65

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
1

Để đả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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
0

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

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
3

Và bạn có thể kích hoạt nó bằng cách sử dụng câu lệnh sau

INSERT INTO categories[categoryName] VALUES ['Smartphone'], ['Smartwatch'];

Code language: SQL [Structured Query Language] [sql]
4

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

Hạn chế trong MySQL là gì?

Các ràng buộc SQL được dùng để chỉ định quy tắc cho dữ liệu trong bảng . Các ràng buộc được sử dụng để giới hạn loại dữ liệu có thể đi vào một bảng. Điều này đảm bảo tính chính xác và độ tin cậy của dữ liệu trong bảng. Nếu có bất kỳ vi phạm nào giữa ràng buộc và hành động dữ liệu, hành động đó sẽ bị hủy bỏ.

5 ràng buộc trong SQL là gì?

Các ràng buộc sau thường được sử dụng trong SQL. .
NOT NULL - Đảm bảo rằng một cột không thể có giá trị NULL
ĐỘC ĐÁO - Đảm bảo rằng tất cả các giá trị trong một cột đều khác nhau
PRIMARY KEY - Sự kết hợp giữa NOT NULL và UNIQUE. .
FOREIGN KEY - Ngăn chặn các hành động phá hủy liên kết giữa các bảng

Làm cách nào để tạo một ràng buộc trong MySQL?

Cách tạo ràng buộc trong MySQL. Chúng ta có thể xác định các ràng buộc trong một bảng được tạo bởi bằng cách sử dụng câu lệnh CREATE TABLE . MySQL cũng sử dụng câu lệnh ALTER TABLE để chỉ định các ràng buộc trong trường hợp lược đồ bảng hiện có.

một ràng buộc trong MySQL đưa ra 2 ví dụ là gì?

MySQL CONSTRAINT được sử dụng để xác định các quy tắc cho phép hoặc hạn chế những giá trị nào có thể được lưu trữ trong các cột. Mục đích của việc tạo ra các ràng buộc là để thực thi tính toàn vẹn của cơ sở dữ liệu. MySQL CONSTRAINTS được sử dụng để giới hạn loại dữ liệu có thể được chèn vào bảng

Làm cách nào để sử dụng ràng buộc kiểm tra trong MySQL?

Ràng buộc CHECK được sử dụng để giới hạn phạm vi giá trị có thể được đặt trong một cột . Nếu bạn xác định ràng buộc KIỂM TRA trên một cột, nó sẽ chỉ cho phép một số giá trị nhất định cho cột này. Nếu bạn xác định một ràng buộc KIỂM TRA trên một bảng, nó có thể giới hạn các giá trị trong các cột nhất định dựa trên các giá trị trong các cột khác trong hàng.

Làm cách nào để có được tất cả các ràng buộc trong MySQL?

chọn COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME từ information_schema. KEY_COLUMN_USAGE trong đó TABLE_NAME = 'yourTableName' ; .

Chủ Đề