Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вкладені запити | Вкладені Запити
Розширений Рівень SQL
course content

Зміст курсу

Розширений Рівень SQL

Розширений Рівень SQL

1. Групування
2. Вкладені Запити
3. Об'єднання Таблиць
4. DDL та DML в SQL

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

Чудові новини!

Адміністрація школи виражає задоволення нашими останніми досягненнями та сигналізує про готовність до подальшого прогресу.

Починаючи свій літній відпочинок, а ми вступаємо в період гнучкості, ми користуємося можливістю зануритися в нові методології та покращити нашу взаємодію з SQL.

Зокрема, ми прагнемо дослідити вкладені запити, фундаментальну концепцію в операціях SQL.

Для наочності цієї концепції розглянемо ілюстративний приклад, взятий з бази даних нашої організації. З розширенням компанії вводимо нову сутність, а саме department. Це доповнення збільшує нашу структуру даних, впливаючи на динаміку операцій з базою даних.

Давайте розглянемо структуру цієї нової таблиці, щоб краще зрозуміти її роль у розвитку архітектури нашої бази даних:

Як ви можете побачити, нова таблиця містить відділи, їх типи та бюджети. А в таблиці employee, як ви могли згадати, є інформація про відділ, до якого належить кожен працівник.

Розглянемо приклад, де ми використовуємо вкладені запити для отримання інформації про тих працівників, які працюють у відділах з бюджетом $500,000 або менше.

Ось як буде виглядати наш запит:

1234567
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
copy

Як ви можете бачити, цей синтаксис є досить інтуїтивним. Ми використовуємо клаузу WHERE, щоб вказати, що назва відділу має бути присутньою в таблиці, яку ми отримуємо за допомогою внутрішнього запиту.

Давайте розберемо цей запит на дві окремі частини, щоб побачити, як він працює. Спочатку отримаємо назви відділів з бюджетами до 500,000 доларів або менше (наш внутрішній запит):

123
SELECT name FROM department WHERE budget <= 500000
copy

Як ви можете бачити, ми отримали відповідь з 5 відділами. Запам'ятайте цю таблицю.

Тепер, враховуючи отриманий результат, давайте напишемо другий запит, щоб отримати інформацію про працівників з цих відділів:

12345
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
copy

Результат цього запиту буде ідентичним до результату, отриманого нами з першим запитом.

Отже, давайте поетапно розберемо, що ми робимо:

  1. Внутрішній запит отримує names необхідних нам відділів.
  2. Потім, використовуючи клавзу WHERE, ми встановлюємо певний критерій, який перевіряє, чи присутні відділи в таблиці, яку ми отримали за допомогою внутрішнього запиту.
  3. Ми отримуємо бажаний результат.

Синтаксис використання внутрішнього запиту буде виглядати наступним чином:

Але існує кілька важливих пунктів, на які варто зважати при використанні внутрішніх запитів:

  1. Один результат у підзапиті: Вкладений запит повинен повертати лише один стовпець, але він також може бути обмежений до одного значення, якщо використовується у умові порівняння. Це особливо важливо для операторів, таких як =, >, <, >=, <=, <>;
  2. Типи даних: Переконайтеся, що тип даних повернутого стовпця відповідає типу даних стовпця, до якого застосовується умова, щоб уникнути помилок несумісності типів;
  3. Оптимізація: Вкладені запити можуть бути неефективними, особливо якщо вони виконуються для кожного рядка головного запиту;
  4. Використання оператора IN: Вкладені запити часто використовуються з оператором IN для перевірки наявності значень у підмножині даних. Однак оператори порівняння (>, <, >=, <=, <>) також можуть бути використані для більш складних умов.

У наступних розділах ми разом практикуватимемо внутрішні запити та також вивчимо деякі нові нюанси їх використання.

Все було зрозуміло?

Секція 2. Розділ 1
We're sorry to hear that something went wrong. What happened?
some-alt