← К оглавлению занятия

Занятие 02. Оператор WHERE. Специальное значение NULL

📁 Блок: SQL / MySQL ⏱️ Время изучения: ~60 мин 🎯 Сложность: Начальная
#and #or #not #like #in #between #null #where

⚡ Кратко: суть темы

Занятие учит фильтровать строки в 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

Задания

  1. Выберите все строки из таблицы suppliers. Предварительно подключитесь к базе данных northwind.
  2. Выберите только те строки из suppliers, где company = 'Supplier A'.
  3. Выберите все строки из таблицы purchase_orders.
  4. Выберите строки из purchase_orders, где supplier_id = 2.
  5. Выберите supplier_id и shipping_fee из purchase_orders, где created_by = 1 и supplier_id = 5. Объясните результат.
  6. Выберите last_name и first_name из employees, где address равен '123 2nd Avenue' или '123 8th Avenue'. Напишите запрос двумя способами: с OR и с IN.
  7. Выведите все имена сотрудников, в фамилии которых есть английская буква p в середине.
  8. Выберите все строки из orders, где нет информации о shipper_id.
  9. Отформатируйте стиль написания запросов.
  10. Сохраните запросы в файл с расширением .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.