Ràng buộc trong MySQL được sử dụng để chỉ định quy tắc cho phép hoặc hạn chế giá trị/dữ liệu nào sẽ được lưu trữ trong bảng. Chúng cung cấp một phương pháp phù hợp để đảm bảo tính chính xác và toàn vẹn của dữ liệu bên trong bảng. Nó cũng giúp giới hạn loại dữ liệu sẽ được chèn vào bên trong bảng. Nếu có bất kỳ gián đoạn nào xảy ra giữa ràng buộc và hành động dữ liệu, thì hành động đó không thành công
Các loại ràng buộc MySQL
Các ràng buộc trong MySQL được phân thành hai loại
- Ràng buộc mức cột. Các ràng buộc này chỉ được áp dụng cho một cột giới hạn loại dữ liệu cột cụ thể
- Ràng buộc cấp độ bảng. Các ràng buộc này được áp dụng cho toàn bộ bảng giới hạn loại dữ liệu cho toàn bộ bảng
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ằ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ó
cú pháp
Sau đây là cú pháp để tạo một ràng buộc trong bảng
Các ràng buộc được sử dụng trong MySQL
Sau đây là các ràng buộc phổ biến nhất được sử dụng trong MySQL
- CÓ GIÁ TRỊ
- KIỂM TRA
- MẶC ĐỊNH
- KHÓA CHÍNH
- AUTO_INCREMENT
- DUY NHẤT
- MỤC LỤC
- ENUM
- KHÓA NGOÀI
Hãy để chúng tôi thảo luận chi tiết về từng ràng buộc này
Ràng buộc NOT NULL
Ràng buộc này xác định rằng cột không được có giá trị NULL hoặc rỗng. Câu lệnh dưới đây tạo một bảng có ràng buộc NOT NULL
Thực hiện các truy vấn được liệt kê bên dưới để hiểu cách thức hoạt động của nó
đầu ra
Trong hình trên, chúng ta có thể thấy rằng truy vấn INSERT đầu tiên thực thi chính xác, nhưng câu lệnh thứ hai không thành công và đưa ra lỗi cho biết cột LastName không thể rỗng
Hạn chế duy nhất
Ràng buộc này đảm bảo rằng tất cả các giá trị được chèn vào cột sẽ là duy nhất. Nó có nghĩa là một cột không thể lưu trữ các giá trị trùng lặp. MySQL cho phép chúng ta sử dụng nhiều hơn một cột với ràng buộc ĐỘC ĐÁO trong một bảng. Câu lệnh dưới đây tạo một bảng có ràng buộc ĐỘC ĐÁO
Thực hiện các truy vấn được liệt kê bên dưới để hiểu cách thức hoạt động của nó
đầu ra
Trong kết quả bên dưới, chúng ta có thể thấy rằng truy vấn INSERT đầu tiên thực thi chính xác, nhưng câu lệnh thứ hai không thành công và đưa ra lỗi cho biết. Sao chép mục nhập 'Cantabil' cho khóa BrandName
KIỂM TRA Ràng buộc
Nó kiểm soát giá trị trong một cột cụ thể. Nó đảm bảo giá trị được chèn vào cột phải thỏa mãn điều kiện cho trước. Nói cách khác, nó xác định xem giá trị được liên kết với cột có hợp lệ hay không với điều kiện đã cho
Trước phiên bản 8. 0. 16, MySQL sử dụng phiên bản giới hạn của cú pháp ràng buộc này, như được đưa ra bên dưới
Sau phiên bản 8. 0. 16, MySQL sử dụng các ràng buộc KIỂM TRA cho tất cả các công cụ lưu trữ tôi. e. , ràng buộc bảng và ràng buộc cột, như được đưa ra dưới đây
Hãy cho chúng tôi hiểu cách hoạt động của ràng buộc CHECK trong MySQL. Ví dụ: câu lệnh sau tạo bảng "Người" chứa ràng buộc KIỂM TRA trên cột "Tuổi". Ràng buộc CHECK đảm bảo giá trị được chèn vào cột phải thỏa mãn điều kiện cho trước là Tuổi của một người phải lớn hơn hoặc bằng 18
Thực hiện các truy vấn được liệt kê để chèn các giá trị vào bảng
đầu ra
Trong kết quả bên dưới, chúng ta có thể thấy rằng truy vấn INSERT đầu tiên thực hiện thành công, nhưng câu lệnh thứ hai không thành công và đưa ra lỗi cho biết. Ràng buộc CHECK bị vi phạm đối với khóa Tuổi
Ràng buộc MẶC ĐỊNH
Ràng buộc này được sử dụng để đặt giá trị mặc định cho cột cụ thể mà chúng tôi chưa chỉ định bất kỳ giá trị nào. Nó có nghĩa là cột phải chứa một giá trị, bao gồm cả NULL
Ví dụ: câu lệnh sau tạo bảng "Người" chứa ràng buộc MẶC ĐỊNH trên cột "Thành phố". Nếu chúng tôi chưa chỉ định bất kỳ giá trị nào cho cột Thành phố, nó sẽ chèn giá trị mặc định
Thực hiện các truy vấn được liệt kê để chèn các giá trị vào bảng
đầu ra
Trong kết quả bên dưới, chúng ta có thể thấy rằng câu lệnh chèn đầu tiên chứa tất cả các trường đã thực thi thành công, trong khi câu lệnh chèn thứ hai không chứa cột "Thành phố" nhưng cũng được thực thi thành công. Đó là bởi vì nó có một giá trị mặc định
Bây giờ, thực hiện câu lệnh sau để xác thực giá trị mặc định cho cột thứ 4
Chúng ta có thể thấy rằng nó hoạt động hoàn hảo. Nó có nghĩa là giá trị mặc định "New York" được lưu trữ tự động trong cột Thành phố
Ràng buộc khóa chính
Ràng buộc này được sử dụng để xác định duy nhất từng bản ghi trong một bảng. Nếu cột chứa các ràng buộc về khóa chính, thì cột đó không được để trống hoặc rỗng. Một bảng có thể có các cột trùng nhau, nhưng nó chỉ có thể chứa một khóa chính. Nó luôn chứa giá trị duy nhất vào một cột
Câu lệnh sau tạo một bảng "Person" và giải thích rõ hơn việc sử dụng khóa chính này
Tiếp theo, sử dụng truy vấn chèn để lưu trữ dữ liệu vào bảng
đầu ra
Trong kết quả bên dưới, chúng ta có thể thấy rằng truy vấn chèn đầu tiên thực hiện thành công. Trong khi câu lệnh chèn thứ hai không thành công và đưa ra lỗi cho biết. Sao chép mục nhập cho cột khóa chính
Ràng buộc AUTO_INCREMENT
Ràng buộc này tự động tạo ra một số duy nhất bất cứ khi nào chúng ta chèn một bản ghi mới vào bảng. Nói chung, chúng tôi sử dụng ràng buộc này cho trường khóa chính trong bảng
Chúng ta có thể hiểu nó với ví dụ sau cột id sẽ được tự động tăng trong bảng Animal
Tiếp theo, chúng ta cần chèn các giá trị vào bảng "Động vật"
Bây giờ, thực hiện câu lệnh dưới đây để lấy dữ liệu bảng
đầu ra
Trong kết quả, chúng ta có thể thấy rằng tôi chưa chỉ định bất kỳ giá trị nào cho cột tăng tự động, vì vậy MySQL sẽ tự động tạo một số duy nhất theo thứ tự cho trường này
Ràng buộc ENUM
Kiểu dữ liệu ENUM trong MySQL là một đối tượng chuỗi. Nó cho phép chúng tôi giới hạn giá trị được chọn từ danh sách các giá trị được phép trong đặc tả cột tại thời điểm tạo bảng. Nó là viết tắt của phép liệt kê, có nghĩa là mỗi cột có thể có một trong các giá trị có thể được chỉ định. Nó sử dụng các chỉ mục số [1, 2, 3…] để biểu thị các giá trị chuỗi
Hình minh họa sau đây tạo một bảng có tên là "sơ mi" có ba cột. id, tên và kích thước. Tên cột "kích thước" sử dụng kiểu dữ liệu ENUM chứa kích thước nhỏ, trung bình, lớn và x-lớn
Tiếp theo, chúng ta cần chèn các giá trị vào bảng "Shirts" bằng cách sử dụng các câu lệnh bên dưới
Bây giờ, hãy thực thi câu lệnh SELECT để xem các giá trị được chèn vào bảng
đầu ra
Chúng tôi sẽ nhận được đầu ra sau
Ràng buộc CHỈ SỐ
Ràng buộc này cho phép chúng ta tạo và truy xuất các giá trị từ bảng rất nhanh chóng và dễ dàng. Một chỉ mục có thể được tạo bằng một hoặc nhiều cột. Nó chỉ định ROWID cho mỗi hàng theo cách mà chúng được chèn vào bảng
Hình minh họa sau đây tạo một bảng có tên là "sơ mi" có ba cột. id, tên và kích thước
Tiếp theo, chúng ta cần chèn các giá trị vào bảng "Shirts" bằng cách sử dụng các câu lệnh bên dưới
Bây giờ, thực hiện câu lệnh này để tạo chỉ mục
Chúng ta có thể sử dụng truy vấn bên dưới để lấy dữ liệu bằng cột chỉ mục
đầu ra
Đầu ra sau đây xuất hiện
Ràng buộc khóa ngoại
Ràng buộc này được sử dụng để liên kết hai bảng với nhau. Nó còn được gọi là khóa tham chiếu. Cột khóa ngoại khớp với trường khóa chính của bảng khác. Nó có nghĩa là trường khóa ngoại trong một bảng đề cập đến trường khóa chính của bảng khác
Chúng ta hãy xem xét cấu trúc của các bảng này. Người và Đơn đặt hàng
Cái bàn. người
Cái bàn. đơn đặt hàng
Trong cấu trúc bảng trên, chúng ta có thể thấy rằng trường "Person_ID" trong bảng "Orders" trỏ đến trường "Person_ID" trong bảng "Persons". "Person_ID" là KHÓA CHÍNH trong bảng "Người", trong khi cột "Person_ID" của bảng "Đơn hàng" là KHÓA NGOÀI