В предыдущем уроке мы узнали об изменении данных. На этом уроке мы углубимся в расширенные концепции SQL, которые могут улучшить ваши возможности поиска и анализа данных. Мы рассмотрим подзапросы и вложенные запросы, а также важные операторы, такие как EXISTS, NOT EXISTS, IN, NOT IN, UNION, INTERSECT и EXCEPT. К концу этого урока у вас будет четкое представление об этих передовых концепциях SQL и о том, как их эффективно использовать. Давайте начнем!
Главы этой серии
- Глава 1: Введение и основной синтаксис
- Глава 2: Фильтрация и сортировка данных
- Глава 3: Манипулирование данными
- Глава 4. Запросы к нескольким таблицам с помощью JOIN
- Глава 5: Агрегирование данных
- Глава 6: Изменение данных
- Глава 7: Расширенные концепции SQL
- Глава 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. Я регулярно делюсь ценным контентом на этих платформах.