Занятие 02. Оператор WHERE. Специальное значение NULL
⚡ Кратко: суть темы
Занятие учит фильтровать строки в SQL-запросах с помощью оператора WHERE. Мы разберём операторы сравнения, логические операторы AND/OR/NOT, поиск по маске LIKE, множественный выбор IN и BETWEEN, а также правила работы со специальным значением NULL.
WHEREидёт послеFROMи отбирает только подходящие строки.- Операторы сравнения:
=,<>/!=,<,<=,>,>=. LIKEиспользует%(любые символы) и_(один символ).NULL— отсутствие значения; для проверки используются толькоIS NULLиIS NOT NULL.
Что запомнить: NULL = NULL не истинно — никогда не сравнивайте NULL обычными операторами.
Частая ошибка: писать WHERE column = NULL вместо WHERE column IS NULL.
🏠 Домашнее задание 1
Для выполнения заданий используйте базу данных с доступом на чтение:
- hostname:
ich-db.edu.itcareerhub.de - username:
ich1 - password:
password
Задания
- Выберите все строки из таблицы
suppliers. Предварительно подключитесь к базе данныхnorthwind. - Выберите только те строки из
suppliers, гдеcompany = 'Supplier A'. - Выберите все строки из таблицы
purchase_orders. - Выберите строки из
purchase_orders, гдеsupplier_id = 2. - Выберите
supplier_idиshipping_feeизpurchase_orders, гдеcreated_by = 1иsupplier_id = 5. Объясните результат. - Выберите
last_nameиfirst_nameизemployees, гдеaddressравен'123 2nd Avenue'или'123 8th Avenue'. Напишите запрос двумя способами: сORи сIN. - Выведите все имена сотрудников, в фамилии которых есть английская буква
pв середине. - Выберите все строки из
orders, где нет информации оshipper_id. - Отформатируйте стиль написания запросов.
- Сохраните запросы в файл с расширением
.sqlи загрузите на платформу.
Пошаговое решение
USE northwind;
-- 1
SELECT * FROM suppliers;
-- 2
SELECT * FROM suppliers WHERE company = 'Supplier A';
-- 3
SELECT * FROM purchase_orders;
-- 4
SELECT * FROM purchase_orders WHERE supplier_id = 2;
-- 5
SELECT supplier_id, shipping_fee
FROM purchase_orders
WHERE created_by = 1
AND supplier_id = 5;
-- Если результат пустой, значит в таблице нет таких строк.
-- 6: два способа
SELECT last_name, first_name
FROM employees
WHERE address = '123 2nd Avenue'
OR address = '123 8th Avenue';
SELECT last_name, first_name
FROM employees
WHERE address IN ('123 2nd Avenue', '123 8th Avenue');
-- 7
SELECT first_name
FROM employees
WHERE last_name LIKE '%p%';
-- 8
SELECT *
FROM orders
WHERE shipper_id IS NULL;
Проверка
- Все запросы заканчиваются точкой с запятой.
- Ключевые слова — заглавными, имена таблиц и столбцов — строчными.
- Для
NULLиспользуетсяIS NULL, а не= NULL.