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 Show
Giới thiệu về khóa ngoại MySQLKhó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à 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 5 và bảng 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 6 được chỉ định bởi cột 0 Cột 0 trong bảng 6 liên kết với cột khóa chính 0 trong bảng 5 Bảng 5 được gọi là bảng cha hoặc bảng được tham chiếu và bảng 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à 7 (xem ví dụ về hành động 8 bên dưới) Ví dụ: mỗi hàng trong bảng 6 có một 0 tồn tại trong cột 0 của bảng 5. Nhiều hàng trong bảng 6 có thể có cùng một 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 05 sau đây từ cơ sở dữ liệu mẫu Cột 06 là khóa ngoại đề cập đến cột 07 là khóa chính của bảng 05 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ưới Khóa ngoại trên cột 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 62 hoặc 63 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 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 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 đề 66 và 67. 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 ( 66) hoặc được cập nhật ( 67) MySQL có năm tùy chọn tham chiếu. 71, 8, 73, 74 và 75
Trên thực tế, MySQL hỗ trợ đầy đủ ba hành động. 74, 71 và 8 Nếu bạn không chỉ định mệnh đề 66 và 67, hành động mặc định là 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à 60 để trình diễn 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)73Bên trong cơ sở dữ liệu 60, tạo hai bảng 64 và 65 3 66 trong bảng 65 là cột khóa ngoại tham chiếu đến cột 66 trong bảng 64 Bởi vì chúng tôi không chỉ định bất kỳ mệnh đề 67 và 66 nào, hành động mặc định là 74 cho cả thao tác cập nhật và xóa Các bước sau minh họa hành động 74 1) Chèn hai hàng vào bảng 64
2) Chọn dữ liệu từ bảng 64
3) Chèn một hàng mới vào bảng 65. 0 Nó hoạt động vì 66 1 tồn tại trong bảng 64 4) Cố gắng chèn một hàng mới vào bảng 65 với giá trị 66 không tồn tại trong bảng 64 6 MySQL đã đưa ra lỗi sau 7 5) Cập nhật giá trị trong cột ________ 566 trong bảng ________ 564 thành ________ 5714 8 MySQL đã đưa ra lỗi này 6 Vì tùy chọn 74, bạn không thể xóa hoặc cập nhật 716 vì nó được tham chiếu bởi 717 718 trong bảng 65 INSERT INTO categories(categoryName) VALUES ('Smartphone'), ('Smartwatch');Code language: SQL (Structured Query Language) (sql)71 hành độngCác bước này minh họa cách hoạt động của các tác vụ 721 và 722 1) Bỏ bảng 65 70 2) Tạo bảng 65 với các tùy chọn 721 và 726 cho khóa ngoại 71 3) Chèn bốn hàng vào bảng 65 72 4) Chọn dữ liệu từ bảng 65 73 5) Cập nhật 66 từ 1 đến 100 trong bảng 64. 74 6) Xác minh bản cập nhật
7) Lấy dữ liệu từ bảng 65. 73 Như bạn có thể thấy, hai hàng có giá trị 718 trong cột 66 của bảng 65 đã được tự động cập nhật thành 714 do hành động 721. 8) Xóa 66 2 khỏi bảng 64 77 9) Xác minh việc xóa
10) Kiểm tra bảng 65. 73 Tất cả sản phẩm có 66 2 từ bảng 65 đã tự động bị xóa do hành động 726. SELECT * FROM categories;Code language: SQL (Structured Query Language) (sql)8 hành độngCác bước này minh họa cách hoạt động của các tác vụ 744 và 745 1) Bỏ cả hai bảng 64 và 65 30 2) Tạo bảng 64 và 65 31 Khóa ngoại trong bảng 65 đã thay đổi thành tùy chọn 744 và 745 3) Chèn các hàng vào bảng 64 32 4) Chèn hàng vào bảng 65 72 5) Cập nhật 66 từ 1 đến 100 trong bảng 64 74 6) Xác minh bản cập nhật
7) Chọn dữ liệu từ bảng 65. Các hàng có 66 1 trong bảng 65 được đặt tự động thành 7 do tác vụ 744 8) Xóa 66 2 khỏi bảng 64 36 9) Kiểm tra bảng 65 73 Các giá trị trong cột 66 của các hàng có 66 2 trong bảng 65 được đặt tự động thành 7 do tác vụ 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 770 38 Trong cú pháp này
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ả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 774 39 Ví dụ, để xem các khóa ngoại của bảng 65, bạn sử dụng câu lệnh sau 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 65 bảng có một ràng buộc khóa ngoại. 777 Và câu lệnh này loại bỏ ràng buộc khóa ngoại của bảng 65 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 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 3 Và bạn có thể kích hoạt nó bằng cách sử dụng câu lệnh sau 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' ; . |