DDL (Data Definition Language) — Мова визначення даних. Використовується для створення, зміни та видалення структур бази даних, таких як таблиці, індекси, схеми тощо.
Основні команди
•CREATE (створення об’єктів) •ALTER (зміна структури об’єктів) •DROP (видалення об’єктів) •TRUNCATE (видалення всіх даних з таблиці без видалення самої таблиці)
DML
DML (Data Manipulation Language) — Мова маніпулювання даними. Використовується для роботи з даними: вставка, оновлення, видалення та вибірка.
DCL (Data Control Language) — Мова керування доступом до даних. Використовується для контролю доступу до бази даних, надання або відкликання прав доступу.
Основні команди
•GRANT (надання прав доступу) •REVOKE (відкликання прав доступу)
TCL
TCL (Transaction Control Language) — Мова керування транзакціями. Використовується для керування транзакціями, що дозволяє виконувати кілька операцій як єдину одиницю, з гарантованою атомарністю (якщо одна операція не успішна, то всі інші повертаються до початкового стану).
Основні команди
•COMMIT (підтвердження транзакції) •ROLLBACK (відкат транзакції) •SAVEPOINT (створення контрольної точки в транзакції) •SET TRANSACTION (налаштування параметрів транзакції)
Атрибут FOREIGN KEY в MySQL використовується для встановлення зв’язків між таблицями в базі даних. Він дозволяє визначити, що значення в одному стовпці (або комбінації стовпців) однієї таблиці посилається на значення в іншій таблиці. Це забезпечує цілісність даних в базі, оскільки дозволяє уникати порушень зв’язків між таблицями, таких як наявність посилання на неіснуючі записи. Зовнішній ключ створює реляційний зв’язок між двома таблицями, зазвичай між первинним ключем однієї таблиці та зовнішнім ключем в іншій.
Зв’язок між таблицями
Зовнішній ключ визначає посилання між таблицями: значення у стовпці однієї таблиці посилаються на значення у стовпці іншої таблиці.
Цілісність даних
Встановлення зовнішнього ключа дозволяє забезпечити referential integrity, тобто підтримувати консистентність даних між таблицями. Наприклад, ви не зможете вставити запис із посиланням на неіснуючий запис в іншій таблиці.
Типи обмежень
ON DELETE: Описує, що відбувається з рядками в дочірній таблиці при видаленні запису в батьківській таблиці (наприклад, CASCADE, SET NULL). ON UPDATE: Описує, що відбувається з рядками в дочірній таблиці при оновленні значення в батьківській таблиці.
Приклад застосування при створенні таблиці
CREATE TABLE customers (
customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(100) NOT NULL
);
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
);
INSERT INTO customers (customer_name) VALUES ('John Doe');
INSERT INTO orders (order_date, customer_id) VALUES ('2025-05-20', 1);
INSERT INTO orders (order_date, customer_id) VALUES ('2025-05-20', 999);
-- останній INSERT не виконається,
-- оскільки id 999 нема в таблиці customers
CASCADE, SET NULL, RESTRICT, NO ACTION
ON DELETE CASCADE
Якщо в таблиці customers буде видалено клієнта, то всі замовлення, які до нього відносяться, також будуть видалені.
ON DELETE SET NULL
Якщо клієнт буде видалений, то значення в стовпці customer_id таблиці orders буде встановлено в NULL замість видалення замовлень.
ON UPDATE CASCADE
Якщо значення в customer_id в таблиці customers зміниться, то це значення буде автоматично оновлено у всіх рядках таблиці orders, де воно використовується.
Типи обмежень
Тип обмеження
Опис
CASCADE
Операція (видалення або оновлення) в батьківській таблиці буде автоматично застосована до дочірньої таблиці.
SET NULL
При видаленні або оновленні запису в батьківській таблиці значення в дочірній таблиці буде змінено на NULL.
RESTRICT
Забороняє операцію видалення або оновлення в батьківській таблиці, якщо є відповідні записи в дочірній таблиці.
NO ACTION
Аналогічно до RESTRICT, але дія відбувається після виконання всіх інших перевірок.
Приклад використання FOREIGN KEY разом із CASCADE:
CREATE TABLE orders2 (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Приклад використання FOREIGN KEY разом із SET NULL:
CREATE TABLE orders3 (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE SET NULL
);
Приклад використання FOREIGN KEY разом із RESTRICT:
CREATE TABLE orders4 (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT
);
Приклад використання FOREIGN KEY разом із NO ACTION:
CREATE TABLE orders5 (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
Атрибут 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
Забезпечує унікальність значень у стовпці.
Гарантує, що всі значення в полі будуть унікальними.