Запросы SQL — это мясо и картошка RDBMS CRUD (создание, чтение, обновление, удаление). Но по мере роста вашего приложения или корпоративной базы данных потребность в интеллектуальных запросах для извлечения условных, специфичных для требований данных становится обязательной.

SQL является относительно всеобъемлющим и включает в себя множество функций, каждая из которых хорошо подходит для различных бизнес-применений. Одна из таких функций включает использование подзапросов.

Чтобы сделать ваши коды эффективными и действенными, вы можете использовать подзапросы в своих кодах SQL для извлечения данных, управления существующими переменными и достижения нескольких целей за один раз.

Что такое подзапросы SQL?

Подзапрос — это вложенный запрос, который работает как параметр внутри другого основного запроса. Подзапрос представляет собой внутренний запрос, в то время как основной запрос внешний запрос.

Предполагается, что подзапрос возвращает данные в качестве аргумента в скобках для основного запроса, в то время как основной запрос дополнительно извлекает окончательный результат.

instagram viewer

Подзапросы встроены в Выбирать заявление или в Где пункт. Такая структура позволяет подзапросу вести себя как хорошо описанное условие фильтрации данных. К сожалению, подзапросы могут использовать только Группа по команды и не Сортировать по команды, так как они разрешены только в основном запросе.

Связанный: Все, что вам нужно знать об операторе 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-запросов — отличный способ продвинуться вперед.

Читать далее

доляТвитнутьЭлектронное письмо
Похожие темы
  • Программирование
  • Программирование
  • SQL
  • Инструменты программирования
Об авторе
Гаурав Сиял (опубликовано 35 статей)

Гаурав Сиял имеет двухлетний опыт написания текстов для ряда компаний, занимающихся цифровым маркетингом, и документов по жизненному циклу программного обеспечения.

Другие работы Гаурава Сиала

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться