MySQL - Ràng Buộc Kiểm Tra: Hướng Dẫn Dành Cho Người Mới Bắt Đầu

Xin chào các bạn yêu thích cơ sở dữ liệu! Tôi rất vui mừng được làm hướng dẫn viên cho các bạn trong hành trình khám phá thế giới Ràng Buộc Kiểm Tra của MySQL. Là một người đã dạy khoa học máy tính trong nhiều năm, tôi hiểu rõ rằng những khái niệm mới có thể rất đáng sợ. Nhưng đừng lo lắng - chúng ta sẽ cùng nhau từng bước, và cuối cùng, bạn sẽ trở thành một chuyên gia về Ràng Buộc Kiểm Tra!

MySQL - Check Constraints

Ràng Buộc Kiểm Tra Là Gì?

Trước khi chúng ta đi sâu vào, hãy bắt đầu từ những điều cơ bản. Hãy tưởng tượng bạn đang giữ hồ sơ tuổi của bạn bè. Bạn sẽ không muốn vô tình nhập một số âm hoặc một số quá lớn, phải không? Đó là khi Ràng Buộc Kiểm Tra phát huy tác dụng!

Ràng Buộc Kiểm Tra giống như một bảo vệ ở câu lạc bộ - nó kiểm tra xem dữ liệu entering vào bảng của bạn có đáp ứng các điều kiện nhất định hay không. Nếu không, nó sẽ không được phép vào. Đơn giản vậy!

Ràng Buộc Kiểm Tra Trong MySQL

MySQL đã giới thiệu Ràng Buộc Kiểm Tra trong phiên bản 8.0.16. Nếu bạn đang sử dụng phiên bản较早, đừng lo lắng - chúng ta sẽ covers một phương pháp thay thế sử dụng trigger sau.

Hãy bắt đầu với một ví dụ cơ bản:

CREATE TABLE friends (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT CHECK (age >= 0 AND age <= 120)
);

Trong ví dụ này, chúng ta đang tạo một bảng叫做 'friends'. Ràng buộc CHECK đảm bảo rằng giá trị của 'age' nằm giữa 0 và 120. Nó giống như nói với bảo vệ, "Chỉ cho phép những người có tuổi từ 0 đến 120 vào!"

Ràng Buộc Kiểm Tra Sử Dụng Trigger

Đối với những bạn sử dụng các phiên bản MySQL较早, đừng cảm thấy bị bỏ qua! Chúng ta có thể đạt được chức năng tương tự bằng cách sử dụng trigger. Dưới đây là cách thực hiện:

DELIMITER //
CREATE TRIGGER check_age
BEFORE INSERT ON friends
FOR EACH ROW
BEGIN
IF NEW.age < 0 OR NEW.age > 120 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Age must be between 0 and 120';
END IF;
END;//
DELIMITER ;

Trigger này hoạt động như bảo vệ của chúng ta, kiểm tra mỗi mục mới trước khi nó được chèn vào bảng.

Thêm Ràng Buộc Kiểm Tra Trên Một Cột

Hãy tưởng tượng chúng ta muốn đảm bảo rằng tên trong bảng 'friends' có ít nhất 2 ký tự:

ALTER TABLE friends
ADD CONSTRAINT check_name_length
CHECK (LENGTH(name) >= 2);

Bây giờ, việc thử chèn một tên ngắn hơn 2 ký tự sẽ gây ra lỗi. Nó giống như bảo vệ nói, "Xin lỗi, tên của bạn quá ngắn. Bạn không thể vào!"

Thêm Ràng Buộc Kiểm Tra Trên Nhiều Cột

Đôi khi, chúng ta cần kiểm tra nhiều cột cùng một lúc. Hãy tưởng tượng chúng ta muốn đảm bảo rằng số yêu thích của một người bạn luôn nhỏ hơn tuổi của họ:

ALTER TABLE friends
ADD COLUMN favorite_number INT,
ADD CONSTRAINT check_favorite_number
CHECK (favorite_number < age);

Ràng buộc này kiểm tra hai cột cùng một lúc. Nó giống như bảo vệ kiểm tra cả thẻ ID và vé của bạn trước khi để bạn vào!

Thêm Ràng Buộc Kiểm Tra Vào Bảng Đã Tồn Tại

Nếu chúng ta đã có một bảng và muốn thêm một Ràng Buộc Kiểm Tra, sao요? Không có vấn đề gì! Chúng ta có thể sử dụng lệnh ALTER TABLE:

ALTER TABLE friends
ADD CONSTRAINT check_age
CHECK (age >= 0 AND age <= 120);

Lệnh này thêm ràng buộc kiểm tra tuổi vào bảng 'friends' đã tồn tại. Nó giống như thuê một bảo vệ mới cho câu lạc bộ của chúng ta!

Xóa Ràng Buộc Kiểm Tra

Đôi khi, chúng ta có thể cần xóa một Ràng Buộc Kiểm Tra. Dưới đây là cách thực hiện:

ALTER TABLE friends
DROP CONSTRAINT check_age;

Lệnh này xóa ràng buộc 'check_age' khỏi bảng 'friends'. Nó giống như nói với bảo vệ, "Bạn có thể về nhà bây giờ. Chúng tôi không cần kiểm tra tuổi nữa."

Ràng Buộc Kiểm Tra Sử Dụng Chương Trình Khách

Nếu bạn đang sử dụng một chương trình khách như MySQL Workbench, bạn có thể thêm Ràng Buộc Kiểm Tra thông qua GUI. Nó thường được tìm thấy trong tùy chọn 'Alter Table'. Hãy nhớ rằng, SQL cơ bản vẫn đang được thực thi - GUI chỉ làm cho nó thân thiện hơn!

Kết Luận

Và thế là bạn đã có những bước đầu tiên vào thế giới Ràng Buộc Kiểm Tra của MySQL. Nhớ rằng, các ràng buộc này là bảo vệ của cơ sở dữ liệu của bạn - chúng giữ dữ liệu xấu ra ngoài và chỉ cho phép dữ liệu tốt vào.

Dưới đây là tóm tắt nhanh các phương pháp chúng ta đã covers:

Phương Pháp Mô Tả
CREATE TABLE với CHECK Thêm ràng buộc khi tạo bảng mới
Trigger Sử dụng cho các phiên bản MySQL较早
ALTER TABLE ADD CONSTRAINT Thêm ràng buộc vào bảng hiện có
ALTER TABLE DROP CONSTRAINT Xóa ràng buộc hiện có

Thực hành các khái niệm này, thử nghiệm với các ràng buộc khác nhau, và trước khi bạn biết điều đó, bạn sẽ trở thành một chuyên gia bảo vệ cơ sở dữ liệu! Nhớ rằng, trong thế giới cơ sở dữ liệu, các ràng buộc tốt tạo ra hàng xóm tốt. Chúc các bạn may mắn với mã code!

Credits: Image by storyset