MySQL - Check Constraints: A Beginner's Guide

Привет,野心勃勃的数据库爱好者们!我很高兴成为你们在这个MySQL Check Constraints世界中的向导。作为一个教计算机科学多年的老师,我深知新概念可能有多么令人畏惧。但别担心 - 我们会一步一步来,到头来,你会成为一个Check Constraint的高手!

MySQL - Check Constraints

Что такое Check Constraints?

Прежде чем мы углубимся, начнем с основ. Представьте, что вы ведете record ages своих друзей. Вы не хотели бы случайно ввести отрицательное число илиridiculously высокое, правильно? Вот где Check Constraints становятся полезными!

Check Constraint похож наouncer в俱乐部е - он проверяет, соответствует ли данные, которые вы вводите в свою таблицу, определенным условиям. Если нет, им не разрешат войти. Просто как что!

The MySQL Check Constraint

MySQL ввел Check Constraints в версии 8.0.16. Если вы используете раньшую версию, не волнуйтесь - мы рассмотрим альтернативный метод с использованием триггеров稍 позже.

Давайте начнем с основного примера:

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

В этом примере мы создаем таблицу 'friends'. CHECK constraint обеспечивает, чтобы значение поля 'age' находилось между 0 и 120. Это как сказать охраннику: "Пускай только тех, кому от 0 до 120 лет!"

Check Constraint с использованием триггера

Для тех из вас, кто использует раньшуи версии MySQL, не чувствуйте себя обделенными! Мы можем достичь аналогичной функциональности, используя триггеры. Вот как это сделать:

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 ;

Этот триггер действует как нашouncer, проверяя каждое новое занчение перед его вставкой в таблицу.

Добавление Check Constraint на单个 столбец

Давайте представим, что мы хотим обеспечить, чтобы имена в нашей таблице 'friends' были не короче 2 символов:

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

Теперь попытка вставить имя короче 2 символов приведет к ошибке. Это какouncer говорит: "Извините, ваше имя слишком короткое. Вы не можете войти!"

Добавление Check Constraint на несколько столбцов

Иногда нам нужно проверить несколько столбцов одновременно. Давайте представим, что мы хотим обеспечить, чтобы любимое число друга всегда было меньше его возраста:

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

Этот constraint проверяет два столбца одновременно. Это какouncer проверяет ваш ID и билет перед тем, как пустить вас внутрь!

Добавление Check Constraint в существующую таблицу

Что делать, если у нас уже есть таблица, и мы хотим добавить Check Constraint? Нет проблем! Мы можем использовать команду ALTER TABLE:

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

Это добавляет нашу проверку возраста в существующую таблицу 'friends'. Это как нанимать новогоouncer для уже открытого клуба!

Удаление Check Constraint

Иногда нам может потребоваться удалить Check Constraint. Вот как это сделать:

ALTER TABLE friends
DROP CONSTRAINT check_age;

Это удаляет constraint 'check_age' из нашей таблицы 'friends'. Это как сказать нашомуouncer: "Теперь вы можете уйти домой. Нам больше не нужны проверки возраста."

Check-Constraints с использованием клиентской программы

Если вы используете клиентскую программу, такую как MySQL Workbench, вы можете добавить Check Constraints через GUI. Обычно это можно найти в разделе 'Alter Table'. Просто помните, что под капотом по-прежнему выполняется SQL - GUI просто делает это более удобным!

Заключение

И вот вы,folks! Вы только что сделали свои первые шаги в мир MySQL Check Constraints. Помните, эти ограничения - этоouncer вашей базы данных - они держат плохие данные снаружи и обеспечивают, чтобы только хорошие данные попали внутрь.

Вот краткое резюме методов, которые мы рассмотрели:

Метод Описание
CREATE TABLE с CHECK Добавить restriction при создании новой таблицы
Trigger Используется для раньших версий MySQL
ALTER TABLE ADD CONSTRAINT Добавить restriction к существующей таблице
ALTER TABLE DROP CONSTRAINT Удалить существующее restriction

Практикуйте эти концепции, экспериментируйте с различными restriction, и sooner или later, вы станетеextraordinaire бouncer для баз данных! Помните, в мире баз данных, хорошие ограничения делают хороших соседей. Счастливого кодирования!

Credits: Image by storyset