Оператор IN

Оператор IN в MySQL використовується для перевірки, чи міститься значення у списку значень. Це спрощує написання SQL-запитів, коли необхідно перевірити кілька значень одночасно.
Синтаксис
SELECT * FROM table_name
WHERE column_name IN (value1, value2, value3, …);    
• column_name — це колонка таблиці, значення якої потрібно порівняти з переліком.    
• (value1, value2, value3, …) — список значень, які ми хочемо порівняти з полем column_name.

Перевірка на кілька конкретних значень

Уявімо, що у нас є таблиця employees, і вам потрібно знайти всіх працівників, чия посада — “Manager”, “Developer” або “Designer”. Запит виглядатиме так:
SELECT * FROM employees
WHERE position IN (‘Manager’, ‘Developer’, ‘Designer’);
Цей запит поверне всі записи з таблиці employees, де значення в колонці position є одним із заданих (в даному випадку, “Manager”, “Developer” або “Designer”).

Перевірка на числові значення

Якщо нам потрібно перевірити кілька числових значень у колонці, можна використовувати оператор IN наступним чином:
SELECT * FROM orders
WHERE order_id IN (1, 3, 5, 7);
Цей запит вибере всі замовлення, у яких значення order_id дорівнює 1, 3, 5 або 7.

Перевірка на дати

Оператор IN можна також використовувати для перевірки на дату або час. Приклад:
SELECT * FROM sales
WHERE sale_date IN (‘2025-01-01’, ‘2025-01-15’, ‘2025-02-01’);
Тут ми вибираємо всі продажі, які відбулися 1 січня 2025 року, 15 січня 2025 року або 1 лютого 2025 року.

Переваги оператора IN

Простота синтаксису: Замінює кілька умов OR в одному запиті, що робить його більш читабельним.
Зручність: Дозволяє легко працювати з кількома значеннями без повторення умови.
Гнучкість: Можна використовувати для різних типів даних — чисел, рядків, дат тощо.

Приклад

-- Створимо базу даних
CREATE DATABASE in_operator_practice;
USE in_operator_practice;
-- Створимо таблицю employees
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    position VARCHAR(50),
    city VARCHAR(50),
    salary DECIMAL(10,2)
);

-- Заповнимо таблицю даними
INSERT INTO employees (name, position, city, salary) VALUES
('Іван Шевчук', 'Developer', 'Київ', 45000.00),
('Марія Іваненко', 'Manager', 'Львів', 60000.00),
('Олег Коваленко', 'Designer', 'Одеса', 40000.00),
('Анна Шевченко', 'Developer', 'Київ', 47000.00),
('Дмитро Мельник', 'HR', 'Харків', 35000.00),
('Оксана Литвин', 'QA Engineer', 'Львів', 38000.00),
('Сергій Павленко', 'Manager', 'Київ', 62000.00),
('Катерина Романюк', 'Designer', 'Дніпро', 41000.00);

-- Знайти працівників певних посад
-- Хочемо отримати всіх Developer, Designer і QA Engineer.

SELECT name, position, salary
FROM employees
WHERE position IN ('Developer', 'Designer', 'QA Engineer');

-- Результат: будуть вибрані всі працівники, чия посада відповідає одному з цих трьох варіантів.

-- Знайти працівників із певних міст
-- Потрібно знайти всіх, хто працює у Києві або Львові.

SELECT name, city, position
FROM employees
WHERE city IN ('Київ', 'Львів');

-- Результат: поверне працівників із Києва та Львова.

--  Використання IN із числовими значеннями
-- Хочемо переглянути інформацію про конкретних працівників за їхніми id:

SELECT * 
FROM employees
WHERE id IN (3, 5, 7);

-- Результат: покаже 3-го, 5-го і 7-го працівників у таблиці.

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

Оператор 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 'І____ %';
--  Результат:
-- Ірина Коваль

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