Оператор NOT

Що робить NOT
Оператор NOT інвертує умову:    
• TRUE → FALSE    
• FALSE → TRUE
Синтаксис
SELECT *
FROM users
WHERE NOT is_blocked = 1;
— Запит повертає всіх користувачів, які не заблоковані.

Приклад

-- Створюємо базу даних
CREATE DATABASE not_practice_db;
USE not_practice_db;
-- Створимо таблицю students.
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100),
    class VARCHAR(10),
    age INT,
    grade INT,
    is_active BOOLEAN
);

--  Заповнюємо таблицю даними
INSERT INTO students (full_name, class, age, grade, is_active) VALUES
('Oleh Ivanenko', '10A', 15, 85, 1),
('Anna Petrenko', '10B', 16, 92, 1),
('Dmytro Shevchuk', '9A', 14, 70, 0),
('Iryna Melnyk', '11A', 17, 88, 1),
('Serhii Bondar', '9B', 14, 60, 0);

-- Активні учні (через NOT)
SELECT *
FROM students
WHERE NOT is_active = 0;
-- Повертає всіх учнів, які навчаються зараз.

-- Учні, які не з 9 класу
SELECT full_name, class
FROM students
WHERE NOT class LIKE '9%';
-- Повертає учнів, клас яких не починається з “9”.

-- Учні з балом НЕ між 80 і 90
SELECT *
FROM students
WHERE grade NOT BETWEEN 80 AND 90;
-- Повертає учнів: з низьким балом або з дуже високим

-- NOT IN
SELECT *
FROM students
WHERE class NOT IN ('10A', '11A');
-- Повертає учнів, які не навчаються в 10A та 11A

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

Оператор OR

Що робить OR
Оператор OR повертає TRUE, якщо хоча б одна умова істинна.
Синтаксис
SELECT *
FROM users
WHERE role = ‘admin’ OR role = ‘manager’;
Результат міститиме:    
• адміністраторів    
• або менеджерів
Навіть якщо друга умова хибна, але перша істинна — рядок потрапить у вибірку.

Приклад

-- Створюємо базу даних
CREATE DATABASE or_practice_db;
USE or_practice_db;
-- Створимо таблицю employees — співробітники компанії.
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(100),
    department VARCHAR(50),
    position VARCHAR(50),
    salary INT,
    is_active BOOLEAN
);

-- Заповнюємо таблицю даними
INSERT INTO employees (full_name, department, position, salary, is_active) VALUES
('Ivan Petrenko', 'IT', 'Developer', 40000, 1),
('Olena Kovalenko', 'HR', 'Recruiter', 25000, 1),
('Mykola Shevchenko', 'IT', 'Tester', 30000, 0),
('Maria Bondar', 'Sales', 'Manager', 28000, 1),
('Oleh Shevchuk', 'Sales', 'Intern', 15000, 0);

-- Працівники з IT або Sales
SELECT *
FROM employees
WHERE department = 'IT' OR department = 'Sales';

-- Активні або з високою зарплатою
SELECT full_name, salary, is_active
FROM employees
WHERE is_active = 1 OR salary > 30000;

-- OR + числові умови
SELECT *
FROM employees
WHERE salary < 20000 OR salary > 35000;

-- OR + LIKE
SELECT *
FROM employees
WHERE position LIKE '%Manager%' OR position LIKE '%Developer%';
-- Повертає менеджерів або розробників.

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

Оператор AND

Що робить AND Оператор AND повертає TRUE лише тоді, коли всі умови істинні одночасно. Якщо хоча б одна умова не виконується — результат буде FALSE.
Синтаксис
SELECT *
FROM users
WHERE age >= 18 AND is_active = 1;

Запит поверне лише користувачів, які:    
• досягли 18 років    
• і мають активний обліковий запис
Приклад із кількома умовами
SELECT *
FROM products
WHERE price > 500 AND quantity > 0 AND category = ‘electronics’;
Тут будуть показані лише ті товари, які:    
• коштують більше 500    
• є в наявності    
• належать до категорії “electronics”

Приклад

-- Створюємо базу даних
CREATE DATABASE and_practice_db;
USE and_practice_db;

-- Створимо таблицю products
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    category VARCHAR(50),
    price DECIMAL(10,2),
    quantity INT,
    is_active BOOLEAN
);

-- Заповнюємо таблицю даними
INSERT INTO products (name, category, price, quantity, is_active) VALUES
('Laptop Lenovo', 'electronics', 25000, 5, 1),
('iPhone 13', 'electronics', 35000, 0, 1),
('Office Chair', 'furniture', 4500, 10, 1),
('Old Monitor', 'electronics', 3000, 2, 0),
('Desk Lamp', 'furniture', 1200, 15, 1);

--  Активні електронні товари
SELECT *
FROM products
WHERE category = 'electronics' AND is_active = 1;

-- Товари дорожчі за 5000 і в наявності
SELECT *
FROM products
WHERE price > 5000 AND quantity > 0;

-- Активні меблі, яких більше ніж 5 штук
SELECT name, price, quantity
FROM products
WHERE category = 'furniture'
AND quantity > 5
AND is_active = 1;

-- активні товари з діапозоном цін від 1000 до 30000
SELECT *
FROM products
WHERE price BETWEEN 1000 AND 30000
AND is_active = 1;

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