Подзапросы SQL для начинающих
Вступление
В этой статье мы поговорим о подзапросах в реляционных базах данных.
И как их использовать с примерами.
Что такое подзапрос?
Подзапрос — это SQL-запрос, вложенный в более крупный запрос.
Где можно использовать подзапросы?
Подзапрос можно использовать в:
- Предложение SELECT
- Предложение FROM
- Предложение WHERE
Несколько уровней вложенности SQL-запросов
Подзапрос может быть вложен в оператор SELECT, INSERT, UPDATE или DELETE.
Или внутри другого подзапроса.
Типичное использование подзапроса
Подзапрос обычно добавляется в предложение WHERE другого оператора SQL SELECT.
Порядок выполнения подзапроса
Внутренний запрос выполняется первым перед родительским запросом.
Результаты внутреннего запроса могут быть переданы внешнему запросу.
Подзапросы не только для выбора
Вы можете использовать подзапрос в:
- ВЫБРАТЬ
- ВСТАВЛЯТЬ
- УДАЛЯТЬ
- ОБНОВИТЬ
Примеры использования подзапроса
Подзапросы позволяют выполнять следующие задачи:
Сложные запросы и фильтры.
Сравните выражение с результатом запроса.
Определите, включено ли выражение в результаты запроса.
Проверьте, выбирает ли запрос какие-либо строки.
Подзапросы с SELECT
Заявление:
Рассмотрим таблицу CUSTOMERS со следующими записями:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Chris | 35 | Paris | 2000.00 |
| 2 | Khaleesi | 25 | London | 1500.00 |
| 3 | Will | 23 | Medellin | 2000.00 |
| 4 | Grace | 25 | Cancun | 6500.00 |
| 5 | Mark | 27 | Ibiza | 8500.00 |
| 6 | Brian | 22 | Sydney | 4500.00 |
| 7 | Matt | 24 | Tokyo| 10000.00 |
+----+----------+-----+-----------+----------+
Теперь давайте проверим следующий подзапрос с помощью инструкции SELECT.
Пример:
SELECT *
FROM CUSTOMERS
WHERE ID IN (
SELECT ID
FROM CUSTOMERS
WHERE SALARY > 4500
);
Это приведет к следующему результату.
+----+----------+-----+---------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+---------+----------+
| 4 | Grace | 25 | Cancun | 6500.00 |
| 5 | Mark | 27 | Ibiza | 8500.00 |
| 7 | Matt | 24 | Tokyo | 10000.00 |
+----+----------+-----+---------+----------+
Подзапросы с UPDATE
Заявление
Подзапрос можно использовать вместе с оператором UPDATE.
При использовании подзапроса с оператором UPDATE можно обновить один или несколько столбцов в таблице.
Пример обновления
Предположим, у нас есть доступная таблица CUSTOMERS_BKP, которая является резервной копией таблицы CUSTOMERS.
В следующем примере SALARY обновляется в 0,25 раза в таблице CUSTOMERS.
Для всех клиентов, чей ВОЗРАСТ больше или равен 27.
UPDATE CUSTOMERS
SET SALARY = SALARY * 0.25
WHERE AGE IN (
SELECT AGE
FROM CUSTOMERS_BKP
WHERE AGE >= 27
);
Это повлияет на две строки, и таблица CUSTOMERS будет иметь следующие записи.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Chris | 35 | Paris | 125.00 |
| 2 | Khaleesi | 25 | London | 1500.00 |
| 3 | Will | 23 | Medellin | 2000.00 |
| 4 | Grace | 25 | Cancun | 6500.00 |
| 5 | Mark | 27 | Ibiza | 2125.00 |
| 6 | Brian | 22 | Sydney | 4500.00 |
| 7 | Matt | 24 | Tokyo | 10000.00 |
+----+----------+-----+-----------+----------+
Подзапросы с DELETE
Заявление_**:
Подзапрос можно использовать вместе с оператором DELETE, как и с любыми другими операторами, упомянутыми выше.
Пример:
Предположим, у нас есть доступная таблица CUSTOMERS_BKP, которая является резервной копией таблицы CUSTOMERS.
В следующем примере удаляются записи из таблицы CUSTOMERS.
для всех клиентов, чей ВОЗРАСТ больше или равен 27.
DELETE FROM CUSTOMERS
WHERE AGE IN (
SELECT AGE
FROM CUSTOMERS_BKP
WHERE AGE >= 27
);
Это повлияет на две строки, и, наконец, таблица CUSTOMERS будет иметь следующие записи.
+----+----------+-----+---------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+---------+----------+
| 2 | Khaleesi | 25 | London | 1500.00 |
| 3 | Will | 23 | Medellin| 2000.00 |
| 4 | Grace | 25 | Cancun | 6500.00 |
| 6 | Brian | 22 | Sydney | 4500.00 |
| 7 | Matt | 24 | Tokyo | 10000.00 |
+----+----------+-----+---------+----------+
Заключение: подзапросы SQL
Подзапросы — это вложенные запросы в SQL.
Их можно использовать для расширенных отчетов и сложной фильтрации.
Сегодня мы на высоком уровне поговорили о том, что такое Sql Queries и как их использовать.
Получить справку по SQL-запросу от меня
Я с удовольствием помогу вам с вашей ситуацией с SQL Query.
Напишите мне сегодня и расскажите, что у вас происходит!