Вкладені запити в MySQL: приклади та пояснення

Останнє оновлення: Травень 26 2025
Автор: TecnoDigital
  • MySQL дозволяє вкладені запити, які є підзапитами всередині основних запитів.
  • Ці запити оптимізують продуктивність, фільтруючи дані послідовно.
  • Вкладені запити пропонують більшу точність і гнучкість у отриманні певних даних.
  • Існують альтернативи, такі як JOIN та представлення, які також допомагають об'єднувати інформацію з кількох таблиць.
Вкладені запити в MySQL

Що таке вкладені запити в MySQL?

Вкладені запити в MySQL — це запити, які містять підзапити, тобто запити всередині інших запитів. Ці підзапити в MySQL використовуються для отримання детальнішої або відфільтрованої інформації з таблиці або набору таблиць у базі даних. Основний запит, також відомий як зовнішній запит, використовує результати підзапиту для виконання додаткової операції або умови. Вкладені запити надають потужний спосіб вилучення конкретних і складних даних із бази даних.

Приклади багатотабличних запитів MySQL
Пов'язана стаття:
Приклади багатотабличних запитів MySQL

Приклад вкладених запитів у MySQL

Щоб краще зрозуміти, як працюють вкладені запити в MySQL, розглянемо практичний приклад. Припустимо, у нашій базі даних є дві таблиці: «Співробітники» і «Відділи». Таблиця Employees містить інформацію про співробітників компанії, тоді як таблиця Departments містить інформацію про різні відділи компанії. Ми хочемо отримати список усіх співробітників, які працюють у відділі «Продажі».

Щоб досягти цього, ми можемо використовувати вкладений запит у MySQL наступним чином:

ВИБЕРІТЬ Ім'я, Прізвище
ВІД Співробітників
ДЕ ІД_відділу IN (ВИБРАТИ ІД_відділу FROM Відділи ДЕ Назва = 'Продажі');

У цьому запиті підзапит у MySQL (SELECT DepartamentoID FROM Departamentos WHERE Nombre = 'Ventas') запускається першим і отримує ідентифікатор відділу «Продажі». Потім основний запит SELECT Nombre, Apellido FROM Empleados WHERE DepartamentoID IN ... Використовуйте результат підзапиту для фільтрації співробітників, які належать до відділу «Продажі».

Це лише простий приклад того, як можна використовувати вкладені запити в MySQL. Вкладені запити можуть стати набагато складнішими та дозволити виконувати більш складні операції та фільтрацію в базі даних.

Переваги вкладених запитів у MySQL

Вкладені запити в MySQL пропонують кілька значних переваг у розробці та оптимізації запитів до бази даних. Деякі з ключових переваг включають:

  1. Більша гнучкістьВкладені запити дозволяють виконувати складніші операції та фільтрувати базу даних, забезпечуючи більшу гнучкість для отримання точних і детальних результатів.
  2. Оптимізація запитівВикористовуючи вкладені запити, ви можете зменшити обсяг оброблених даних і оптимізувати продуктивність запитів. Це досягається шляхом фільтрації даних у послідовних кроках, використовуючи результати підзапиту в основному запиті.
  3. Більша ефективністьВиконуючи вкладені запити, ви можете уникнути необхідності виконувати кілька окремих запитів і об’єднати їх в один запит. Це зменшує навантаження на сервер бази даних і підвищує загальну ефективність системи.
  4. Більша точністьВкладені запити дозволяють точніше фільтрувати та створювати умови для бази даних, що призводить до більш точних і відповідних результатів. Це особливо корисно при роботі з великими наборами даних і необхідності отримання конкретної інформації.
Перегляди в MySQL
Пов'язана стаття:
Перегляди в MySQL: оптимізуйте свій код SQL

Коротше кажучи, вкладені запити в MySQL є потужним інструментом, який дозволяє виконувати складні та детальні запити до баз даних. Їх гнучкість, оптимізація та ефективність роблять їх цінним вибором для розробників і аналітиків баз даних.

  Кар'єрний шлях до професії інженера даних

Як використовувати вкладені запити в MySQL

Тепер, коли ми розуміємо, що таке вкладені запити в MySQL та їхні переваги, давайте розглянемо кілька практичних прикладів їх використання в різних сценаріях.

Вкладений запит з логічними операторами

У MySQL вкладені запити можна поєднувати з логічними операторами, такими як І та АБО, для виконання більш складної фільтрації. Давайте подивимося на приклад:

ВИБЕРІТЬ Ім'я, Прізвище
ВІД Співробітників
ДЕ ІД_відділу В (ВИБРАТИ ІД_відділу З Відділи ДЕ Назва = 'Продажі')
ТА Вік > 30;

У цьому прикладі ми додали додаткову умову за допомогою логічного оператора «І». У запиті тепер будуть вибиратися тільки ті співробітники, які працюють у відділі «Продажі» і старше 30 років.

Вкладений запит із упорядкуванням і обмеженням результату

Вкладені запити також можна комбінувати з пропозицією ORDER BY, щоб упорядкувати результати певним чином. Давайте подивимося на приклад:

ВИБЕРІТЬ Ім'я, Прізвище
ВІД Співробітників
ДЕ ІД_відділу В (ВИБРАТИ ІД_відділу З Відділи ДЕ Назва = 'Продажі')
Упорядкувати за прізвищем За зростанням
ОБМЕЖЕННЯ 10;

У цьому прикладі запит вибере імена та прізвища співробітників, які працюють у відділі «Продажі», відсортовані за алфавітом прізвищ у порядку зростання. Крім того, пункт «LIMIT 10» обмежить результати лише першими 10 співробітниками.

Вкладений запит із агрегатними функціями

Вкладені запити в MySQL також можна комбінувати з агрегатними функціями, такими як «COUNT», «SUM» або «AVG», для отримання зведених результатів. Давайте подивимося на приклад:

ВИБЕРІТЬ Відділ, КІЛЬКІСТЬ(*) ЯК Загальна кількість співробітників
ВІД Департаментів
ДЕ ІДЕНТИФІКАТОР_ВІДДІЛУ В (ВИБРАТИ ІДЕНТИФІКАТОР_ВІДДІЛУ З ПРАЦІВНИКІВ ДЕ Вік > 30)
ГРУПОВАТИ ЗА ВІДДІЛОМ;

У цьому прикладі запит підраховує загальну кількість співробітників у кожному відділі, вік яких перевищує 30 років. Підзапит (SELECT DepartamentoID FROM Empleados WHERE Edad > 30) Відфільтруйте співробітників за віком, а потім основний запит виконає підрахунок за відділами за допомогою функції агрегування «COUNT».

  Data Lineage: що це таке, переваги та як це реалізувати

Вкладений запит із JOIN

Окрім використання підзапитів, також можна комбінувати вкладені запити з пропозицією JOIN, щоб отримати інформацію з кількох таблиць в одному запиті. Давайте подивимося на приклад:

ВИБЕРІТЬ Employees.Name, Departments.Name AS Department
ВІД Співробітників
JOIN Відділи ON Employees.DepartmentID = Відділи.DepartmentID
ДЕ Відділи.ІдентифікаторВідділу IN (ВИБРАТИІдентифікаторВідділу FROM Відділи ДЕ Назва = 'Продажі');

У цьому прикладі запит вибирає імена співробітників і назви їхніх відповідних відділів за допомогою пропозиції «JOIN». Підзапит (SELECT DepartamentoID FROM Departamentos WHERE Nombre = 'Ventas') Використовується для фільтрації співробітників, які належать до відділу «Продажі».

Вкладений запит із EXISTS

Іншим поширеним способом використання вкладених запитів у MySQL є речення “EXISTS”. Це використовується, коли ви хочете перевірити наявність записів у підзапиті. Давайте подивимося на приклад:

ВИБЕРІТЬ Ім'я, Прізвище
ВІД Співробітників E
ДЕ ІСНУЄ (ВИБРАТИ 1 З Відділів D, ДЕ D.DepartmentID = E.DepartmentID AND D.Name = 'Продажі');

У цьому прикладі запит вибирає імена та прізвища співробітників, які належать до відділу під назвою «Продажі». Речення «EXISTS» використовується для перевірки наявності хоча б одного запису в підзапиті (SELECT 1 FROM Departamentos D WHERE D.DepartamentoID = E.DepartamentoID AND D.Nombre = 'Ventas').

Поширені запитання про вкладені запити в MySQL

1. Яка різниця між вкладеним запитом і звичайним запитом у MySQL?

Звичайний запит у MySQL виконується незалежно та вибирає дані з таблиці або кількох таблиць на основі умови. З іншого боку, вкладений запит використовує результати підзапиту в основному запиті для виконання додаткових операцій або застосування більш точних фільтрів.

2. Коли я повинен використовувати вкладені запити в MySQL?

Вкладені запити в MySQL особливо корисні, коли вам потрібні відфільтровані та точні результати з бази даних. Вони використовуються для виконання більш складних операцій і отримання детальної інформації шляхом поєднання результатів різних таблиць або наборів даних.

3. Чи впливають вкладені запити на продуктивність MySQL?

Запити MySQL можуть вплинути на продуктивність MySQL, якщо вони не використовуються належним чином. Важливо оптимізувати вкладені запити та переконатися, що в таблицях використовуються відповідні індекси, щоб уникнути перевантаження та підвищити ефективність.

  Елементи бази даних: 10 основних компонентів

4. Чи існують обмеження щодо рівня вкладеності в запитах MySQL?

MySQL не має певного обмеження на рівень вкладеності в запитах. Однак бажано уникати надмірного вкладення, оскільки це може ускладнити логіку запиту та ускладнити розуміння та підтримку коду.

5. Чи є вкладені запити специфічними для MySQL, чи їх можна використовувати в інших системах баз даних?

Вкладені запити є загальною рисою багатьох систем реляційних баз даних, включаючи MySQL. Хоча синтаксис може дещо відрізнятися в різних системах, загальна концепція використання підзапитів у основних запитах широко використовується.

6. Чи існують альтернативи вкладеним запитам у MySQL?

Так, у MySQL існують альтернативи вкладеним запитам, наприклад використання JOIN і переглядів. Ці прийоми також можна використовувати для комбінування даних з різних таблиць і отримання конкретних результатів. Вибір відповідної техніки залежить від вимог і структури бази даних.

Висновок

Вкладені запити в MySQL є цінним інструментом для виконання складних запитів та отримання точних результатів з баз даних. Їхня здатність поєднувати підзапити з основними запитами дозволяє ефективно фільтрувати та маніпулювати даними. У цій статті ми розглянули приклади та детальні пояснення вкладених запитів у MySQL, підкреслюючи їхню корисність, переваги та способи їх використання в різних сценаріях. Оволодівши використанням вкладених запитів, ви можете підвищити ефективність та точність ваших запитів MySQL та отримати цінну інформацію про ваші бази даних.