Подзапросы SQL

Содержание
  1. Что такое подзапрос в SQL? Подзапрос — это запрос SQL, вложенный в более крупный запрос. Может возникнуть подзапрос in: — Предложение SELECT — Предложение FROM — Предложение WHERE Подзапрос может быть вложен внутри оператора SELECT, INSERT, UPDATE или DELETE или внутри другого подзапроса. Подзапрос обычно добавляется в предложение WHERE другого Оператор SQL SELECT. Вы можете использовать операторы сравнения, такие как>, Подзапрос также называется внутренним запросом или внутренним выбором, в то время как оператор, содержащий подзапрос, также называется внешним запросом или внешним выбором. Внутренний запрос выполняется сначала перед своим родительским запросом, так что результаты внутреннего запроса могут быть переданы внешнему запросу. Вы можете использовать подзапрос в операторе SELECT, INSERT, DELETE или UPDATE для выполнения следующих задач: Сравните выражение с результатом запроса . Определить, включено ли выражение в результаты запроса. Проверить, выбирает ли запрос какие-либо строки. Синтаксис: Подзапрос (внутренний запрос) выполняется один раз перед выполнением основного запроса (внешнего запроса). Основной запрос (внешний запрос) использует результат подзапроса. Пример подзапросов SQL: В этом разделе вы узнаете о требованиях к использованию подзапросов. У нас есть следующие две таблицы «студент» и «оценки» с общим полем «StudentID». оценки учащихся Теперь мы хотим написать запрос, чтобы определить всех учащихся, которые получили более высокие оценки, чем это. студента, у которого StudentID — «V002», но нам неизвестны отметки «V002». — Для решения проблемы нам потребуется два запроса. Один запрос возвращает оценки (хранящиеся в поле Total_marks) «V002», а второй запрос определяет студентов, которые получили более высокие оценки, чем результат первого запроса. Первый запрос: SELECT * FROM `mark` WHERE studentid = 'V002'; Результат запроса: Результатом запроса является 80. -Используя результат этого запроса, здесь мы написали еще один запрос, чтобы определить студентов, которые получили более высокие оценки, чем 80. Вот запрос : Второй запрос: ВЫБРАТЬ a.studentid, a.name, b.total_marks ОТ студента a , отмечает b ГДЕ a.studentid = b.studentidAND b. total_marks> 80; Результат запроса: Выше двух запросов были определены учащиеся, которые получили лучшее число, чем учащийся с идентификатором StudentID ‘V002’ (Abhay). Вы можете объединить два вышеуказанных запроса, поместив один запрос внутри другого. Подзапрос (также называемый «внутренним запросом») — это запрос в круглых скобках. См. Следующий код и результат запроса: Код SQL: SELECT a.studentid, a. имя, b.total_marks ОТ студента a, отмечает b ГДЕ a.studentid = b.studentid И b.total_marks> (ВЫБРАТЬ total_marksFROM markWHERE studentid = 'V002'); Результат запроса: Графическая презентация подзапроса SQL: Подзапросы: Общие Правила Оператор SELECT подзапроса почти аналогичен оператору SELECT и используется для начала обычного или внешнего запроса. Вот синтаксис подзапроса: (SELECT [DISTINCT] subquery_select_argumentFROM {table_name | view_name} {table_name | имя_представления} ... [WHERE search_conditions] [GROUP BY aggregate_expression [, aggregate_expression] ...] [HAVING search_conditions]) Подзапросы: рекомендации Есть некоторые рекомендации, которые следует учитывать при использовании подзапросов: Подзапрос должен быть заключен в круглые скобки. Подзапрос должен быть размещен справа от оператора сравнения. Подзапросы не могут управлять своими результатами внутри, поэтому предложение ORDER BY нельзя добавить в подзапрос. Вы можете использовать предложение ORDER BY в основном операторе SELECT (внешний запрос), который будет последним предложением. Используйте однострочные операторы с однорядными подзапросами. Если подзапрос (внутренний запрос) возвращает нулевое значение внешнему запросу, внешний запрос не вернет никаких строк при использовании определенных операторов сравнения в предложении WHERE. Тип подзапросов Однострочный подзапрос: возвращает ноль или одну строку. Многострочный подзапрос: возвращает одну или несколько строк. Подзапросы с несколькими столбцами: возвращает один или несколько столбцов. Коррелированные подзапросы: ссылка на один или несколько столбцов во внешнем операторе SQL. Подзапрос известен как коррелированный подзапрос, потому что подзапрос связан с внешним оператором SQL. Вложенные подзапросы: подзапросы помещаются в другой подзапрос. На следующем занятии мы подробно обсудили вышеуказанные темы. Помимо вышеуказанного типа подзапросов, вы можете использовать подзапрос внутри операторов INSERT, UPDATE и DELETE. Вот краткое обсуждение: Подзапросы с оператором INSERT Оператор INSERT можно использовать с подзапросами. Вот синтаксис и пример подзапросов, использующих инструкцию INSERT. Синтаксис: INSERT INTO table_name [(column1 [, column2])] SELECT [* | column1 [, column2] FROM table1 [, table2] [WHERE VALUE OPERATOR]; Если мы хотим вставить те заказы из таблицы ‘orders’, у которых есть advance_amount 2000 или 5000 в таблицу ‘neworder’ можно использовать следующий SQL: Образец таблицы: заказы Код SQL: INSERT INTO neworderSELECT * FROM ordersWHERE advance_amount in (2000,5000); Вывод: Чтобы увидеть более подробную информацию о подзапросах с помощью оператора INSERT кликните сюда. Подзапросы с оператором UPDATE В операторе UPDATE вы можете установить новое значение столбца, равное результату, возвращаемому подзапросом с одной строкой. Вот синтаксис и пример подзапросов с использованием оператора UPDATE. Синтаксис: UPDATE table SET имя_столбца = новое_значение [WHERE OPERATOR [VALUE] (SELECT COLUMN_NAMEFROM TABLE_NAME) [WHERE)] Если мы хотим обновить эту ord_date в таблице ‘neworder’ с помощью ’15 -JAN-10′, которые имеют разницу между ord_amount и advance_amount меньше минимального ord_amount таблицы ‘orders’, можно использовать следующий SQL: Образец таблицы: neworder Код SQL: ОБНОВЛЕНИЕ neworderSET ord_date = '15 -JAN-10'WHERE ord_amount-advance_amount Вывод: Чтобы увидеть более подробную информацию о подзапросах, использующих оператор UPDATE, щелкните здесь. Подзапросы с оператором DELETE Оператор DELETE можно использовать с подзапросами. Вот синтаксис и пример подзапросов с использованием оператора DELETE. УДАЛИТЬ ИЗ ТАБЛИЦЫ [ГДЕ ОПЕРАТОР [ЗНАЧЕНИЕ] (ВЫБРАТЬ ИМЯ КОЛОНКИ ИЗ ТАБЛИЦЫ) [ГДЕ)] Если мы хотим удалить те заказы из таблицы ‘neworder’, у которых advance_amount меньше максимального advance_amount таблицы ‘orders’, можно использовать следующий SQL: Sample table: neworder Код SQL: DELETE FROM neworderWHERE advance_amount Вывод: Чтобы увидеть более подробную информацию о подзапросах, использующих оператор DELETE, щелкните здесь. Что дальше? Подзапросы SQL — слайд-презентация Одиночный Подзапросы строк Несколько подзапросов строк и столбцов Коррелированные подзапросы с использованием псевдонимов Вложенные подзапросы Примечание: выходные данные указанного оператора SQL, показанного здесь, получены с помощью Oracle Database 10g Express Edition. Практические упражнения SQL Упражнения по SQL, практика, решение SQL Получение данных из таблиц [33 упражнения] Логические и реляционные операторы SQL [12 упражнений] Подстановочные и специальные операторы SQL [22 упражнения] Агрегатные функции SQL [25 упражнений] Форматирование вывода запроса SQL [10 упражнений] SQL-запросы к нескольким таблицам [7 упражнений] ФИЛЬТРАЦИЯ и СОРТИРОВКА в базе данных HR [38 упражнений] SQL JOINS SQL JOINS [29 упражнений] SQL JOINS в базе данных HR [27 упражнений] ПОДзапросы SQL ПОДзапросы SQL [39 упражнений] ПОДзапросы SQL в базе данных HR [55 упражнений] SQL Union [9 упражнений] Просмотр SQL [16 упражнений] Управление учетными записями пользователей SQL [16 упражнений] База данных фильмов БАЗОВЫЕ запросы к базе данных фильмов [10 упражнений] ПОДзапросы к базе данных фильмов [16 упражнений] ПРИСОЕДИНЯЕТСЯ к базе данных фильмов [24 упражнения] База данных футбола Введение БАЗОВЫЕ запросы к базе данных футбола [29 упражнений] ЗАПРОСЫ в базе данных футбола [33 упражнения] СОЕДИНЯЕТ запросы к базе данных футбола [61 Упражнения] База данных больниц Введение ОСНОВНЫЕ, ПОДПРОСЫ и СОЕДИНЕНИЯ [ 39 упражнений] База данных сотрудников БАЗОВЫЕ запросы к базе данных сотрудников [115 упражнений] ЗАПРОСЫ в базе данных сотрудников [77 упражнений] Еще не все! Хотите улучшить статью выше? Публикуйте свои заметки/комментарии/примеры через Disqus.
  2. Пример подзапросов SQL:
  3. Подзапросы: Общие Правила
  4. Подзапросы: рекомендации
  5. Тип подзапросов
  6. Подзапросы с оператором INSERT
  7. Подзапросы с оператором UPDATE
  8. Подзапросы с оператором DELETE

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

Подзапрос — это запрос SQL, вложенный в более крупный запрос.

  • Может возникнуть подзапрос in:
    • — Предложение SELECT
    • — Предложение FROM
    • — Предложение WHERE
  • Подзапрос может быть вложен внутри оператора SELECT, INSERT, UPDATE или DELETE или внутри другого подзапроса.
  • Подзапрос обычно добавляется в предложение WHERE другого Оператор SQL SELECT.
  • Вы можете использовать операторы сравнения, такие как>,
  • Подзапрос также называется внутренним запросом или внутренним выбором, в то время как оператор, содержащий подзапрос, также называется внешним запросом или внешним выбором.
  • Внутренний запрос выполняется сначала перед своим родительским запросом, так что результаты внутреннего запроса могут быть переданы внешнему запросу.

Вы можете использовать подзапрос в операторе SELECT, INSERT, DELETE или UPDATE для выполнения следующих задач:

  • Сравните выражение с результатом запроса .
  • Определить, включено ли выражение в результаты запроса.
  • Проверить, выбирает ли запрос какие-либо строки.

Синтаксис:

  • Подзапрос (внутренний запрос) выполняется один раз перед выполнением основного запроса (внешнего запроса).
  • Основной запрос (внешний запрос) использует результат подзапроса.

Пример подзапросов SQL:

В этом разделе вы узнаете о требованиях к использованию подзапросов. У нас есть следующие две таблицы «студент» и «оценки» с общим полем «StudentID».


оценки учащихся

Теперь мы хотим написать запрос, чтобы определить всех учащихся, которые получили более высокие оценки, чем это. студента, у которого StudentID — «V002», но нам неизвестны отметки «V002».
— Для решения проблемы нам потребуется два запроса. Один запрос возвращает оценки (хранящиеся в поле Total_marks) «V002», а второй запрос определяет студентов, которые получили более высокие оценки, чем результат первого запроса.

Первый запрос:

  SELECT * FROM `mark` WHERE studentid = 'V002';  

Результат запроса:

Результатом запроса является 80.
-Используя результат этого запроса, здесь мы написали еще один запрос, чтобы определить студентов, которые получили более высокие оценки, чем 80. Вот запрос :

Второй запрос:

  ВЫБРАТЬ a.studentid, a.name, b.total_marks ОТ студента a  , отмечает b ГДЕ a.studentid = b.studentidAND b. total_marks> 80;  

Результат запроса:

Выше двух запросов были определены учащиеся, которые получили лучшее число, чем учащийся с идентификатором StudentID ‘V002’ (Abhay).

Вы можете объединить два вышеуказанных запроса, поместив один запрос внутри другого. Подзапрос (также называемый «внутренним запросом») — это запрос в круглых скобках. См. Следующий код и результат запроса:

Код SQL:

  SELECT a.studentid, a.  имя, b.total_marks ОТ студента a, отмечает b ГДЕ a.studentid = b.studentid И b.total_marks> (ВЫБРАТЬ total_marksFROM markWHERE studentid = 'V002');  

Результат запроса:

Графическая презентация подзапроса SQL:

Подзапросы: Общие Правила

Оператор SELECT подзапроса почти аналогичен оператору SELECT и используется для начала обычного или внешнего запроса. Вот синтаксис подзапроса:

 (SELECT [DISTINCT] subquery_select_argumentFROM {table_name | view_name} {table_name  | имя_представления} ... [WHERE search_conditions] [GROUP BY aggregate_expression [, aggregate_expression] ...] [HAVING search_conditions]) 

Подзапросы: рекомендации

Есть некоторые рекомендации, которые следует учитывать при использовании подзапросов:

  • Подзапрос должен быть заключен в круглые скобки.
  • Подзапрос должен быть размещен справа от оператора сравнения.
  • Подзапросы не могут управлять своими результатами внутри, поэтому предложение ORDER BY нельзя добавить в подзапрос. Вы можете использовать предложение ORDER BY в основном операторе SELECT (внешний запрос), который будет последним предложением.
  • Используйте однострочные операторы с однорядными подзапросами.
  • Если подзапрос (внутренний запрос) возвращает нулевое значение внешнему запросу, внешний запрос не вернет никаких строк при использовании определенных операторов сравнения в предложении WHERE.

Тип подзапросов

  • Однострочный подзапрос: возвращает ноль или одну строку.
  • Многострочный подзапрос: возвращает одну или несколько строк.
  • Подзапросы с несколькими столбцами: возвращает один или несколько столбцов.
  • Коррелированные подзапросы: ссылка на один или несколько столбцов во внешнем операторе SQL. Подзапрос известен как коррелированный подзапрос, потому что подзапрос связан с внешним оператором SQL.
  • Вложенные подзапросы: подзапросы помещаются в другой подзапрос.

На следующем занятии мы подробно обсудили вышеуказанные темы. Помимо вышеуказанного типа подзапросов, вы можете использовать подзапрос внутри операторов INSERT, UPDATE и DELETE. Вот краткое обсуждение:

Подзапросы с оператором INSERT

Оператор INSERT можно использовать с подзапросами. Вот синтаксис и пример подзапросов, использующих инструкцию INSERT.

Синтаксис:

 INSERT INTO table_name [(column1 [,  column2])] SELECT [* | column1 [, column2] FROM table1 [, table2] [WHERE VALUE OPERATOR]; 

Если мы хотим вставить те заказы из таблицы ‘orders’, у которых есть advance_amount 2000 или 5000 в таблицу ‘neworder’ можно использовать следующий SQL:

Образец таблицы: заказы

Код SQL:

  INSERT INTO neworderSELECT * FROM ordersWHERE advance_amount in (2000,5000);  

Вывод:

Чтобы увидеть более подробную информацию о подзапросах с помощью оператора INSERT кликните сюда.

Подзапросы с оператором UPDATE

В операторе UPDATE вы можете установить новое значение столбца, равное результату, возвращаемому подзапросом с одной строкой. Вот синтаксис и пример подзапросов с использованием оператора UPDATE.

Синтаксис:

 UPDATE table SET имя_столбца = новое_значение [WHERE  OPERATOR [VALUE] (SELECT COLUMN_NAMEFROM TABLE_NAME) [WHERE)] 

Если мы хотим обновить эту ord_date в таблице ‘neworder’ с помощью ’15 -JAN-10′, которые имеют разницу между ord_amount и advance_amount меньше минимального ord_amount таблицы ‘orders’, можно использовать следующий SQL:

Образец таблицы: neworder

Код SQL:

  ОБНОВЛЕНИЕ neworderSET ord_date = '15 -JAN-10'WHERE ord_amount-advance_amount  

Вывод:

Чтобы увидеть более подробную информацию о подзапросах, использующих оператор UPDATE, щелкните здесь.

Подзапросы с оператором DELETE

Оператор DELETE можно использовать с подзапросами. Вот синтаксис и пример подзапросов с использованием оператора DELETE.

 УДАЛИТЬ ИЗ ТАБЛИЦЫ [ГДЕ ОПЕРАТОР [ЗНАЧЕНИЕ] (ВЫБРАТЬ ИМЯ КОЛОНКИ ИЗ ТАБЛИЦЫ) [ГДЕ)] 

Если мы хотим удалить те заказы из таблицы ‘neworder’, у которых advance_amount меньше максимального advance_amount таблицы ‘orders’, можно использовать следующий SQL:

Sample table: neworder

Код SQL:

  DELETE FROM neworderWHERE advance_amount  

Вывод:

Чтобы увидеть более подробную информацию о подзапросах, использующих оператор DELETE, щелкните здесь.

Что дальше?

  • Подзапросы SQL — слайд-презентация
  • Одиночный Подзапросы строк
  • Несколько подзапросов строк и столбцов
  • Коррелированные подзапросы с использованием псевдонимов
  • Вложенные подзапросы

Примечание: выходные данные указанного оператора SQL, показанного здесь, получены с помощью Oracle Database 10g Express Edition.

Практические упражнения SQL

  • Упражнения по SQL, практика, решение
  • SQL Получение данных из таблиц [33 упражнения]
  • Логические и реляционные операторы SQL [12 упражнений]
  • Подстановочные и специальные операторы SQL [22 упражнения]
  • Агрегатные функции SQL [25 упражнений]
  • Форматирование вывода запроса SQL [10 упражнений]
  • SQL-запросы к нескольким таблицам [7 упражнений]
  • ФИЛЬТРАЦИЯ и СОРТИРОВКА в базе данных HR [38 упражнений]
  • SQL JOINS
    • SQL JOINS [29 упражнений]
    • SQL JOINS в базе данных HR [27 упражнений]
  • ПОДзапросы SQL
    • ПОДзапросы SQL [39 упражнений]
    • ПОДзапросы SQL в базе данных HR [55 упражнений]
  • SQL Union [9 упражнений]
  • Просмотр SQL [16 упражнений]
  • Управление учетными записями пользователей SQL [16 упражнений]
  • База данных фильмов
    • БАЗОВЫЕ запросы к базе данных фильмов [10 упражнений]
    • ПОДзапросы к базе данных фильмов [16 упражнений]
    • ПРИСОЕДИНЯЕТСЯ к базе данных фильмов [24 упражнения]
  • База данных футбола
    • Введение
    • БАЗОВЫЕ запросы к базе данных футбола [29 упражнений]
    • ЗАПРОСЫ в базе данных футбола [33 упражнения]
    • СОЕДИНЯЕТ запросы к базе данных футбола [61 Упражнения]
  • База данных больниц
    • Введение
    • ОСНОВНЫЕ, ПОДПРОСЫ и СОЕДИНЕНИЯ [ 39 упражнений]
  • База данных сотрудников
    • БАЗОВЫЕ запросы к базе данных сотрудников [115 упражнений]
    • ЗАПРОСЫ в базе данных сотрудников [77 упражнений]
  • Еще не все!

Хотите улучшить статью выше? Публикуйте свои заметки/комментарии/примеры через Disqus.

Оцените статью
nanomode.ru
Добавить комментарий