В предыдущем уроке мы узнали об изменении данных. На этом уроке мы углубимся в расширенные концепции SQL, которые могут улучшить ваши возможности поиска и анализа данных. Мы рассмотрим подзапросы и вложенные запросы, а также важные операторы, такие как EXISTS, NOT EXISTS, IN, NOT IN, UNION, INTERSECT и EXCEPT. К концу этого урока у вас будет четкое представление об этих передовых концепциях SQL и о том, как их эффективно использовать. Давайте начнем!

Главы этой серии

  1. Глава 1: Введение и основной синтаксис
  2. Глава 2: Фильтрация и сортировка данных
  3. Глава 3: Манипулирование данными
  4. Глава 4. Запросы к нескольким таблицам с помощью JOIN
  5. Глава 5: Агрегирование данных
  6. Глава 6: Изменение данных
  7. Глава 7: Расширенные концепции SQL
  8. Глава 8: Изменение структуры таблицы

1. Подзапросы и вложенные запросы

Подзапросы, также известные как вложенные запросы, позволяют вкладывать один запрос в другой. Это позволяет извлекать данные из одного запроса и использовать их в качестве входных данных для другого запроса. Подзапросы можно использовать в предложениях SELECT, FROM, WHERE и HAVING. Вот пример использования подзапроса в предложении WHERE для поиска клиентов, разместивших заказ:

SELECT name
FROM customers
WHERE customer_id IN (SELECT customer_id FROM orders);

В этом примере подзапрос (SELECT customer_id FROM orders) извлекает все идентификаторы клиентов из таблицы «заказы». Затем внешний запрос выбирает имена клиентов, идентификаторы которых присутствуют в результатах подзапроса.

2. Операторы EXISTS и NOT EXISTS

Операторы EXISTS и NOT EXISTS используются для проверки существования или отсутствия строк, возвращаемых подзапросом. Оператор EXISTS возвращает значение true, если подзапрос возвращает какие-либо строки, а оператор NOT EXISTS возвращает значение true, если подзапрос не возвращает никаких строк. Вот пример использования оператора EXISTS для поиска клиентов, разместивших хотя бы один заказ:

SELECT name
FROM customers
WHERE EXISTS (SELECT * FROM orders WHERE customers.customer_id = orders.customer_id);

В этом примере подзапрос проверяет, есть ли в таблице «заказы» какая-либо строка, соответствующая идентификатору клиента во внешнем запросе. Если совпадение найдено, выполняется условие EXISTS и выбирается имя клиента.

3. Операторы IN и NOT IN

Операторы IN и NOT IN используются для сравнения значения с набором значений, возвращаемых подзапросом. Оператор IN возвращает значение true, если значение найдено в результате подзапроса, а оператор NOT IN возвращает значение true, если значение не найдено. Вот пример использования оператора IN для поиска клиентов из определенных городов:

SELECT name
FROM customers
WHERE city IN ('New York', 'London', 'Paris');

В этом примере запрос выбирает клиентов, чей город — «Нью-Йорк», «Лондон» или «Париж».

4. Операторы UNION, INTERSECT и EXCEPT

Операторы UNION, INTERSECT и EXCEPT используются для объединения или сравнения результатов двух или более операторов SELECT.

UNION объединяет наборы результатов двух или более операторов SELECT в один набор результатов, удаляя повторяющиеся строки. Например:

SELECT name FROM customers
UNION
SELECT name FROM suppliers;

INTERSECT возвращает общие строки между наборами результатов двух или более операторов SELECT. Например:

SELECT name FROM customers
INTERSECT
SELECT name FROM suppliers;

EXCEPT возвращает строки из первого оператора SELECT, которых нет в наборах результатов последующих операторов SELECT. Например:

SELECT name FROM customers
EXCEPT
SELECT name FROM suppliers;

5. Вывод

На этом уроке мы рассмотрели расширенные концепции SQL, такие как подзапросы и вложенные запросы, операторы EXISTS и NOT EXISTS, операторы IN и NOT IN, а также операторы UNION, INTERSECT и EXCEPT. Эти концепции позволяют выполнять сложные задачи по поиску и анализу данных, позволяя извлекать ценные

Если вы нашли этот курс полезным и хотели бы изучить больше бесплатных курсов, я приглашаю вас подписаться на мою учетную запись на Medium и связаться со мной в LinkedIn. Я регулярно делюсь ценным контентом на этих платформах.