Запросы SQL — это мясо и картошка RDBMS CRUD (создание, чтение, обновление, удаление). Но по мере роста вашего приложения или корпоративной базы данных потребность в интеллектуальных запросах для извлечения условных, специфичных для требований данных становится обязательной.
SQL является относительно всеобъемлющим и включает в себя множество функций, каждая из которых хорошо подходит для различных бизнес-применений. Одна из таких функций включает использование подзапросов.
Чтобы сделать ваши коды эффективными и действенными, вы можете использовать подзапросы в своих кодах SQL для извлечения данных, управления существующими переменными и достижения нескольких целей за один раз.
Что такое подзапросы SQL?
Подзапрос — это вложенный запрос, который работает как параметр внутри другого основного запроса. Подзапрос представляет собой внутренний запрос, в то время как основной запрос внешний запрос.
Предполагается, что подзапрос возвращает данные в качестве аргумента в скобках для основного запроса, в то время как основной запрос дополнительно извлекает окончательный результат.
Подзапросы встроены в Выбирать заявление или в Где пункт. Такая структура позволяет подзапросу вести себя как хорошо описанное условие фильтрации данных. К сожалению, подзапросы могут использовать только Группа по команды и не Сортировать по команды, так как они разрешены только в основном запросе.
Связанный: Все, что вам нужно знать об операторе SQL GROUP BY
Обычно каждый подзапрос состоит из одного столбца с Выбирать пункт. Однако существуют сценарии, в которых основной запрос имеет несколько столбцов. Подзапрос может быть вложен в другой подзапрос, превращая его во вложенный подзапрос.
Строгость подзапроса выглядит следующим образом:
Выберите имя_столбца из таблицы, где условие =
(SELECT conditional_column FROM table) как псевдоним;
Например, предположим, что у вас есть следующая таблица:
Я БЫ | Имя | Отчество | Agency_fee |
1 | Джон | Фитиль | 5000 |
2 | Роберт | Грэм | 4000 |
3 | Стивен | Хикс | 8000 |
4 | Боб | Марли | 1000 |
5 | Мэри | Эллен | 9000 |
В эту таблицу, чтобы вытащить имена людей, зарабатывающих выше среднего агентского гонорара, можно написать подзапрос, вместо того, чтобы писать несколько строк кода.
Связанный: Как создать таблицу в SQL
Вот как выглядит запрос:
Выберите * из agent_details
где Agency_Fee > (выберите avg (Agency_Fee) из agent_details);
Команда перед > знак является внешним запросом, тогда как все после знака > знак - это внутренний запрос.
Внутренний запрос рассчитает среднюю комиссию агентства в рамках подзапроса, а внешний запрос покажет все значения, которые превышают рассчитанное среднее значение.
Как использовать подзапросы в SQL?
Существует несколько различных способов использования подзапросов в SQL.
Подзапросы с предложением Where
Одна из самых основных структур подзапроса в SQL находится в предложении Where. Это самый простой способ определить, что вы ищете. Оператор select возвращает значения в соответствии с условием (условиями) подзапроса и использует его в качестве параметра для основного запроса.
Структура запроса:
выберите * из table_name
где имя_столбца = (выберите имя_столбца из имени_таблицы);
Поясним это на примере.
Предположим, вы хотите найти второе по величине агентское вознаграждение из таблицы agency_details. Для этого в SQL есть альтернативные функции; тем не менее, лучший способ — использовать подзапрос.
Вот как вы можете определить подзапрос:
выберите *, макс. (Agency_fee)
от agent_details
где Agency_fee < (выберите max (Agency_fee) из agent_details);
Результирующее заявление покажет вам 8000, что является второй по величине комиссией в данной таблице. Когда запрос выполняется, подзапрос вычисляет максимальное значение из списка сборов. Максимальная сумма комиссии (9000) сохраняется в памяти.
Как только эта часть вычислена, вычисляется вторая часть запроса, которая находит вторую по величине комиссию из таблицы (поскольку < используется знак). Конечный результат 8000, что является второй по величине комиссией в таблице.
Подзапросы в предложении From
Другой вариант внутри подзапросов — передача условия в от пункт. По аналогичной концепции сначала обрабатывается внутренний запрос, а затем внешний запрос. Внутренний запрос будет фильтровать данные и показывать результаты, где ID = 3.
Вот запрос для справки:
выберите a.* из (
выберите Agency_fee из agent_details
где ID= 3) как а;
Это очень простая структура; однако, чем сложнее ваши таблицы данных, вы получите больше строк данных, соответствующих вашим условиям.
Использование подзапросов с оператором Insert Into
Если вы хотите обновить существующую таблицу некоторыми новыми строками данных, вы можете использовать Вставить в утверждение. Подзапрос может оказаться весьма полезным, если вы хотите добавить значения на основе определенного условия (условий).
Структура запроса:
вставить в table_name
выберите * из table_name
где имя_столбца = условия;
выберите * из table_name;
Вот пример того, как вы можете использовать оператор вставки в с подзапросом:
вставить в agent_details
выберите * из agent_details
где Agency_fee в (1000, 5000);
выберите * из agent_details;
После выполнения запроса значения, соответствующие условию, будут снова вставлены в существующую таблицу. То Выбрать * reference собирает все столбцы вместе и вставляет их в таблицу agent_details как есть. То в Оператор используется для одновременного определения нескольких условий фильтрации.
Использование подзапросов с оператором обновления
Бывают ситуации, когда вы хотите обновить базовые таблицы во время выполнения запросов. Для этого вы можете использовать Обновить оператор вместе с командами запроса.
Вот как вы напишете подзапрос для обновления информации в таблице за один раз:
обновить имя_таблицы
установить имя_столбца = новое_значение
где имя_столбца =
(выберите имя_столбца из имени_таблицы, где =);
Вот пример, демонстрирующий использование оператора update:
ОБНОВЛЕНИЕ agent_details
SET Agency_fee = 35000
ГДЕ Agency_fee =
(ВЫБЕРИТЕ Agency_fee FROM agent_details WHERE First_name='John');
выберите * из agent_details;
Подзапрос отфильтрует столбец Agency_fee и выделит строку (строки), где соответствует First_Name Джон. Затем выполняется внешний запрос, в котором агентское вознаграждение обновляется до 35000 для Джона Уика.
Вы можете пройти Выбрать * заявление для проверки окончательных результатов; вы заметите, что агентское вознаграждение за John Wick обновлено до 35000, так как есть только экземпляр, соответствующий условиям, определенным в запросе.
Использование подзапросов с оператором Delete
Так же, как оператор обновления, в котором вы обновляете строки данных в существующей таблице, Удалить оператор удаляет строку (строки) данных на основе условия.
Структура оператора удаления:
удалить из table_name, где имя переменной/столбца =
(выберите имя_столбца из имени_таблицы, где = условие);
Вот пример:
Удалить из agent_details
где Имя IN
(выберите First_name из agent_details, где agency_fee = 9000);
выберите * из agent_details;
Использование подзапросов в SQL
Подзапросы — отличная функция SQL, которая может избавить вас от написания бесконечных строк ненужного кода. Когда вы сможете использовать базовые функции подзапросов для выполнения своих ставок, вам никогда не захочется беспокоиться о сложностях кодирования SQL.
Всегда лучше улучшить свои существующие знания SQL, чтобы всегда быть на высоте. Будьте уверены, шпаргалки по SQL могут дать вам хорошее представление о том, как освежить свои основы с одного взгляда.
Хотите узнать больше о SQL? Владение различными командами SQL-запросов — отличный способ продвинуться вперед.
Читать далее
- Программирование
- Программирование
- SQL
- Инструменты программирования
Гаурав Сиял имеет двухлетний опыт написания текстов для ряда компаний, занимающихся цифровым маркетингом, и документов по жизненному циклу программного обеспечения.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться