| Атрибут CHECK в MySQL використовується для обмеження значень, які можуть бути введені в стовпець таблиці. Він дозволяє задати умови перевірки для значень в стовпці, таким чином, щоб лише ті значення, які задовольняють вказану умову, могли бути внесені в таблицю. Якщо значення не відповідає умові, MySQL не дозволить виконати операцію, і буде згенерована помилка. | |
| Умови перевірки | Умова перевірки може включати будь-які логічні вирази, що порівнюють значення стовпців із конкретними значеннями чи іншими стовпцями. |
| Гнучкість перевірок | Ви можете використовувати стандартні операції порівняння (наприклад, =, >, <, >=, <=, BETWEEN, IN, LIKE тощо) та логічні оператори (AND, OR, NOT). |
| Обмеження для запобігання некоректних даних | Це може бути корисним для того, щоб забезпечити певні правила або обмеження на дані, наприклад, гарантувати, що значення в полі є позитивним числом або що дата не перевищує поточну. |
Основне використання CHECK
У цьому прикладі ми створюємо таблицю employees, в якій поле age повинно містити лише числа більші за 16, а поле salary повинно бути більше або рівне 1000.
CREATE TABLE employees (
employee_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
employee_name VARCHAR(100) NOT NULL,
age INT CHECK (age > 16),
salary DECIMAL(10, 2) CHECK (salary >= 1000)
);
INSERT INTO employees (employee_name, age, salary)
VALUES ('John', 20, 1000);
INSERT INTO employees (employee_name, age, salary)
VALUES ('John', 15, 1001);
INSERT INTO employees (employee_name, age, salary)
VALUES ('John', 17, 999);
Перевірка за допомогою оператора IN
Ми можемо створювати більш складні умови для перевірок. Наприклад, можна гарантувати, що поле gender може бути лише “M” (male – чоловік) або “F” (female – жінка).
CREATE TABLE employees2 (
employee_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
employee_name VARCHAR(100) NOT NULL,
gender CHAR(1) CHECK (gender IN ('M', 'F'))
);
INSERT INTO employees2 (employee_name, gender)
VALUES ('Jenny', ‘F’);
INSERT INTO employees2 (employee_name, gender)
VALUES ('John', ‘M’);
INSERT INTO employees2 (employee_name, gender)
VALUES ('Jacky', ‘J’);
Перевірка за допомогою оператора BETWEEN
Ви можете комбінувати перевірки для числових значень, наприклад, щоб зарплата була в межах певного діапазону (між 1000 і 10000).
CREATE TABLE employees3 (
employee_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
employee_name VARCHAR(100) NOT NULL,
salary DECIMAL(10, 2) CHECK (salary BETWEEN 1000 AND 10000)
);
INSERT INTO employees3 (employee_name, salary)
VALUES ('Jenny', 10000);
INSERT INTO employees3 (employee_name, salary)
VALUES ('John', 1000);
INSERT INTO employees3 (employee_name, salary)
VALUES ('Jacky', 999);
INSERT INTO employees3 (employee_name, salary)
VALUES ('Franky', 10001);
Порівняння з іншими атрибутами
| Атрибут | Опис | Використання |
| CHECK | Забезпечує, що значення в полі задовольняють певну умову. | Наприклад, обмеження на значення (тільки позитивні числа, обмеження діапазону тощо). |
| NOT NULL | Гарантує, що поле не може містити значення NULL. | Зазначає, що стовпець обов’язково має мати значення. |
| DEFAULT | Встановлює значення за замовчуванням, якщо значення не задано при внесенні в таблицю. | Використовується для автоматичного заповнення значенням за замовчуванням, якщо поле не заповнене. |
| UNIQUE | Забезпечує унікальність значень у стовпці. | Гарантує, що всі значення в полі будуть унікальними. |
Для додаткової візуалізації є відео:

