Оператор LIKE

Оператор LIKE в MySQL використовується для пошуку рядків, які відповідають певному шаблону у запитах SELECT, UPDATE або DELETE. Це дуже зручно, коли потрібно здійснити частковий пошук або фільтрацію.
Синтаксис
SELECT * FROM table_name
WHERE column_name LIKE pattern;

У шаблонах LIKE використовуються два основні wildcards (спеціальні символи):
% – Будь-яка кількість символів (в т.ч. нуль)
_ – Рівно один будь-який символ

Приклад

-- Починається з...
SELECT * FROM users
WHERE name LIKE 'Ан%';
-- Знайде: Андрій, Анна, Антон, але не Іван.
       
-- Закінчується на...
SELECT * FROM products
WHERE code LIKE '%XYZ';
-- Знайде: 123XYZ, ABXYZ, але не XYZ123.

-- Містить...
SELECT * FROM articles
WHERE title LIKE '%наука%';
-- Знайде: Світ науки, Популярна наука, Історія науки.

-- Фіксована кількість символів
SELECT * FROM users
WHERE username LIKE 'A___';  -- 4 символи, починається з 'A'
-- Знайде: Alex, Anna

Наскрізний приклад

-- Створення бази даних
CREATE DATABASE like_operator_practice;
USE like_operator_practice;

-- Створення таблиці employees
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100),
    position VARCHAR(50),
    email VARCHAR(100)
);

-- Наповнення таблиці даними
INSERT INTO employees (full_name, position, email) VALUES
('Олександр Луценко', 'Інженер', 'olutsenko@example.com'),
('Ірина Коваль', 'Менеджер', 'ikoval@example.com'),
('Андрій Міхненко', 'Інженер', 'amihnenko@example.com'),
('Анна Шевчук', 'HR-менеджер', 'ashevchuk@example.com'),
('Вікторія Нестеренко', 'Інженер-програміст', 'vnester@example.com'),
('Іван Сидоренко', 'Тестувальник', 'isidorenko@example.com');

-- Пошук всіх працівників, чиє ім’я починається на "Ан"
SELECT * FROM employees
WHERE full_name LIKE 'Ан%';
--  Результат:
-- Андрій Міхненко
-- Анна Шевчук

-- Пошук позицій, які містять слово "Інженер"
SELECT * FROM employees
WHERE position LIKE '%Інженер%';
-- Результат:
-- Олександр Луценко — Інженер
-- Вікторія Нестеренко — Інженер-програміст
-- Андрій Міхненко — Інженер

-- Пошук email-адрес, які починаються з "i"
SELECT * FROM employees
WHERE email LIKE 'i%';
-- Результат:
-- ikoval@example.com
-- isidorenko@example.com

-- Пошук працівників з іменами довжиною 5 символів, які починаються на "І"
SELECT * FROM employees
WHERE full_name LIKE 'І____ %';
--  Результат:
-- Ірина Коваль

Для додаткової візуалізації є відео.

Команда SELECT

Команда SELECT — це основна інструкція мови SQL (Structured Query Language), яка використовується для отримання вибірок даних з бази. Вона дозволяє отримати інформацію з однієї або кількох таблиць у вигляді, який потрібен користувачу або програмі.
SELECT фактично є запитом до бази даних, за допомогою якого можна:
• Вибрати конкретні стовпці (поля) з таблиці.
• Вибрати всі стовпці таблиці.
• Фільтрувати рядки за певними умовами.
• Сортувати дані.
• Групувати дані.
• Здійснювати обчислення над вибраними даними.
• Об’єднувати дані з кількох таблиць.

Синтаксис

Основний синтаксис SELECT
SELECT [стовпці або вирази]
FROM [таблиця]
WHERE [умови]
GROUP BY [стовпці]
HAVING [умови для груп]
ORDER BY [стовпці]
LIMIT [кількість_рядків];

Пояснення

SELECT — задає, які саме стовпці або вирази потрібно вибрати. Можна вибрати конкретні стовпці (наприклад, name, age) або всі (*).
FROM — визначає таблицю або таблиці, з яких буде здійснюватися вибірка.
WHERE — задає умови відбору рядків, що відфільтровує дані. Наприклад, age > 18 вибирає лише тих, у кого вік більший за 18.
GROUP BY — використовується для групування рядків за певними стовпцями. Наприклад, підрахунок кількості користувачів у кожному місті.
HAVING — умови, які застосовуються до згрупованих даних (фільтрація груп).
ORDER BY — задає порядок сортування вибірки, наприклад, за зростанням чи спаданням.
LIMIT — обмежує кількість рядків у результаті, що повертається.

Розширені можливості SELECT

Використання агрегатних функцій: COUNT(), SUM(), AVG(), MIN(), MAX() для обчислень по групах.
Об’єднання таблиць (JOIN): можна вибирати дані з декількох таблиць, пов’язаних між собою.
Підзапити (Subqueries): запити всередині інших запитів.
Вибір унікальних значень (DISTINCT): виключає повтори.

Значення SELECT

Основний спосіб отримання даних з бази.
Відповідає за більшість операцій читання інформації.
Забезпечує гнучкість для вибору тільки потрібних даних.
Підтримує корисні механізми фільтрації, сортування та агрегації.
Використовується у всіх типах додатків, які працюють з базами даних.

Приклад

-- Створення бази даних
CREATE DATABASE select_practice_1;
USE select_practice_1;
-- Створення таблиці
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    age INT
);
-- Наповнення таблиці даними
INSERT INTO users (name, email, age) VALUES 
('Олена Іваненко', 'olena@example.com', 25),
('Андрій Петренко', 'andriy@example.com', 17),
('Марія Коваленко', 'maria@example.com', 30),
('Ігор Сидоренко', 'ihor@example.com', 22),
('Світлана Шевчук', 'svitlana@example.com', 19),
('Дмитро Бондар', 'dmytro@example.com', 16),
('Катерина Шевченко', 'kateryna@example.com', 28),
('Олександр Мельничук', 'oleksandr@example.com', 21);
-- Вибрати всі стовпці з таблиці users:
SELECT * FROM users;

-- Вибрати конкретні стовпці:
SELECT name, email FROM users;

-- Вибрати користувачів старших 18 років:
SELECT name, age FROM users WHERE age > 18;

-- Відсортувати користувачів за віком у спадному порядку:
SELECT name, age FROM users ORDER BY age DESC;

-- Вибрати перші 5 користувачів за віком:
SELECT name, age FROM users ORDER BY age DESC LIMIT 5;

Для додаткової візуалізації є відео.

Команда DELETE

У MySQL (як і в SQL загалом), DELETE — це команда, яка використовується для видалення рядків (записів) із таблиці.
Синтаксис команди DELETE DELETE FROM ім’я_таблиці WHERE умова;
ім’я_таблиці — назва таблиці, з якої видаляються дані. умова (після WHERE) визначає, які саме рядки будуть видалені.
Якщо не вказати WHERE, то всі рядки таблиці буде видалено! DELETE FROM employees;  — Видалить ВСІ записи
Видалення одного запису за ID DELETE FROM employees WHERE id = 3; — Цей запит видалить співробітника з id = 3.
Видалення кількох рядків за умовою DELETE FROM employees WHERE department = ‘Кадри’; — Видалить усіх працівників з відділу кадрів.
Видалення всіх записів (але таблиця залишиться) DELETE FROM employees; — Таблиця залишиться в базі, але всі її дані буде стерто.

Приклад

-- Створення бази даних
CREATE DATABASE delete_practice_db;
USE delete_practice_db;
-- Створення таблиці employees
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100),
    position VARCHAR(50),
    department VARCHAR(50),
    salary DECIMAL(10, 2)
);
-- Додавання працівників
INSERT INTO employees (full_name, position, department, salary) VALUES
('Олег Ващук', 'Менеджер', 'Продажі', 15000.00),
('Вікторія Тарасенко', 'Аналітик', 'Технічний відділ', 19000.00),
('Михайло Биков', 'Інженер', 'Технічний відділ', 17000.00),
('Анжела Шевчук', 'Бухгалтер', 'Фінанси', 13500.00),
('Віталій Петренко', 'HR', 'Кадри', 12000.00),
('Катерина Міщенко', 'Дизайнер', 'Маркетинг', 13500.00),
('Антон Мелльник', 'Менеджер', 'Продажі', 12500.00);
-- Перевірка поточного стану
SELECT * FROM employees;

-- Видалити одного працівника за ім’ям
DELETE FROM employees
WHERE full_name = 'Михайло Биков';
-- Буде видалено працівника з цим ім’ям.

-- Видалення за посадою дизайнер
DELETE FROM employees
WHERE position = 'Дизайнер';
-- Буде видалено запис із вказаною посадою
-- Видалити працівників із зарплатою менше 13000
DELETE FROM employees
WHERE salary < 13000;

-- Перевірка результатів
SELECT * FROM employees;
-- Залишаться лише ті працівники, які не були видалені відповідно до умов.

-- Видалення всіх записів
DELETE FROM employees;

Для додаткової візуалізації є відео.